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

Fra*_*cal 4 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'

但是如果我创建一个自定义桥接网络一切正常:
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 (...)

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

Mat*_*att 5

默认网桥上的容器需要显式链接,这被认为是遗留/弃用的行为。

警告:该--link标志是 Docker 已弃用的遗留功能。它可能最终会被删除。除非您绝对需要继续使用它,否则我们建议您使用用户定义的网络来促进两个容器之间的通信,而不是使用--link. 您可以使用用户定义网络不支持的一项功能 --link是在容器之间共享环境变量。但是,您可以使用其他机制(例如卷)以更可控的方式在容器之间共享环境变量。

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