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

标签 docker docker-networking

似乎 docker 服务发现仅适用于用户定义的网络,而不适用于默认网桥(docker0),但我在文档中没有找到任何内容。
docker run --rm -d --name c1 alpine sleep 2hdocker run --rm -d --name c2 alpine sleep 2hdocker exec -ti c1 ping c2
它给了我 ping: bad address 'c2'
但是如果我创建一个自定义桥接网络一切正常:docker network create u-bridgedocker run --rm -d --name u1 --net u-bridge alpine sleep 2hdocker run --rm -d --name u2 --net u-bridge alpine sleep 2hdocker exec -ti u1 ping u2
它给了我:PING u2 (172.18.0.3): 56 data bytes (...)
默认桥接网络不应该有服务发现吗?

最佳答案

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

Warning: The --link flag is a deprecated legacy feature of Docker. It may eventually be removed. Unless you absolutely need to continue using it, we recommend that you use user-defined networks to facilitate communication between two containers instead of using --link. One feature that user-defined networks do not support that you can do with --link is sharing environmental variables between containers. However, you can use other mechanisms such as volumes to share environment variables between containers in a more controlled way.



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

关于Docker 服务发现不适用于默认网桥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46781444/

相关文章:

docker - Docker Swarm服务间通信是否通过路由网格?

docker - 是否可以在 docker-compose 中同时使用网络默认值和外部外部?

docker - 无法在 Docker Windows 的 docker-compose 中绑定(bind)主机卷

python - Docker 容器仅在退出时打印输出

git - 对开发团队的 Codespaces 设置的基数感到困惑

python - 从子进程调用的 bash 脚本的返回代码

bash - Docker 断开所有容器与 docker 网络的连接

r - 我收到错误消息无法在本地找到docker镜像;但是我可以使用docker run命令运行镜像

docker - Docker将两个容器上的相同端口映射到主机上的不同端口

python - Python-Docker容器无法连接到MariaDB-Docker容器