docker集装箱之间的通信故障

我正在运行一个“elasticsearch”容器。 我可以curl容器并得到结果,但是当我尝试与我的“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 

您不能在web容器内使用localhost:9200连接到elasticsearch容器。 您可以定义一个链接或只使用服务名称(默认情况下映射):

 curl elasticsearch:9200 

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

另请参阅Docker撰写链接

你应该试图curl elasticsearch:9200 ,而不是localhost:9200 。 主机名elasticsearch应该位于Web容器的主机文件中。