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

问题描述 投票:1回答:2

看起来像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'

但是,如果我创建一个自定义桥接网络一切正常: qazxsw poi qazxsw poi 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 docker-networking
2个回答
3
投票

默认网桥上的容器需要明确为docker exec -ti u1 ping u2,这被视为遗留/弃用行为。

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

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


1
投票

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

请参阅:--link

© www.soinside.com 2019 - 2024. All rights reserved.