Docker服务发现不适用于默认网桥

时间:2017-10-17 02:05:04

标签: docker docker-networking

看起来像docker服务发现只适用于用户定义的网络而不是默认网桥(docker0),但我没有在文档中找到任何内容。

docker run --rm -d --name c1 alpine sleep 2h
docker run --rm -d --name c2 alpine sleep 2h
docker exec -ti c1 ping c2

它给了我ping: bad address 'c2'

但是,如果我创建一个自定义网桥,那么everthing工作正常:
docker network create u-bridge
docker run --rm -d --name u1 --net u-bridge alpine sleep 2h
docker run --rm -d --name u2 --net u-bridge alpine sleep 2h
docker exec -ti u1 ping u2

它给了我:PING u2 (172.18.0.3): 56 data bytes (...)

默认桥接网络不应该有服务发现吗?

2 个答案:

答案 0 :(得分:3)

默认网桥上的容器需要明确linked,这被视为遗留/弃用行为。

  

警告:--link标志是Docker不推荐使用的旧功能。有可能   最终被删除。除非你绝对需要继续使用   它,我们建议您使用用户定义的网络来方便   两个容器之间的通信,而不是使用--link。一   用户定义的网络不支持您可以使用的功能   --link正在容器之间共享环境变量。但是,您可以使用其他机制(如卷)来共享环境   容器之间的变量以更加可控的方式。

正如您所演示的那样,应该使用用户定义的网络。

答案 1 :(得分:1)

默认网桥和用户定义网络的DNS查找工作方式不同。

请参阅:https://docs.docker.com/engine/userguide/networking/configure-dns/