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>