Docker撰写V2networking错误

我正在尝试两个容器之间的通信,但无法做到这一点。 我在docker compose中添加一个名为'server'的服务,依赖于名为'endpoint'的另一个服务。 我需要将“端点”的IP和端口传递给“服务器”,我正在做如下

command: -userver -e endpoint:51393 

但现在我没有看到使用以下命令的主机列表中的“端点”:

 docker-compose exec server cat /etc/hosts 

这里是输出:

 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.21.0.3 49f4808fa677 

我的完整docker-compose.yml文件如下:

 version: '2' services: endpoint: build: context: . dockerfile: Dockerfile image: myimage_end:0.1 command: -uendpoint ports: - 51393:51393 networks: - internal server: build: context: . dockerfile: Dockerfile image: myimage_server:0.1 command: -userver -e endpoint:51393 ports: - 51392:51392 depends_on: - endpoint networks: - internal volumes: - /local_path/dataset:/dataset networks: internal: driver: bridge 

当您使用当前版本的Docker组合时,从另一个容器到另一个容器不再通过操作容器的主机文件来完成,因为这是一个非常静态的设置。

现在,docker-compose使用某种dns服务,允许同一networking中的所有容器在服务名称下互相看到。 这允许从属容器被停止而不导致依赖容器也停止/重新启动。 为了这个工作,你也不需要指定depends_on 。 这只需要在重启依赖关系时触发依赖服务的重启。

有关更多详细信息,请查看有关networking的docker-compose文档 。

一些用于debugging你的情况的命令:

 docker-compose exec server nslookup endpoint docker inspect <container_name_of_service>