无法在docker容器之间进行通信

时间:2017-01-23 14:40:47

标签: elasticsearch docker

我正在运行一个“elasticsearch”容器。我可以卷曲容器并获得结果但是当我尝试从我的“web”容器中与容器通信时它拒绝连接。

docker-compose up
curl localhost:9200 // works.
curl docker-compose run web curl localhost:9200 // connection refused.

docker-compose.yml

version: '2'
services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - .:/src
    ports:
      - "5000:5000"
    depends_on:
      - elasticsearch

  elasticsearch:
    image: elasticsearch:5.1.2
    ports:
      - "9200:9200"

Dockerfile

FROM python:3.5

ADD . /src
WORKDIR /src

RUN pip install -r requirements.txt

CMD python project/wsgi.py

2 个答案:

答案 0 :(得分:2)

您无法使用localhost:9200容器中的web连接到elasticsearch容器。您可以定义链接或仅使用服务名称(默认情况下映射):

curl elasticsearch:9200
  

链接允许您定义额外的别名,通过该别名可以从其他服务访问服务。它们不需要启用服务进行通信 - 默认情况下,任何服务都可以通过该服务的名称访问任何其他服务。

另见Docker Compose Links

答案 1 :(得分:1)

您应该尝试卷曲elasticsearch:9200,而不是localhost:9200。主机名elasticsearch应位于Web容器上的hosts文件中。