了解为什么需要在 docker0 上公开端口以进行容器间通信

  • 本文关键字:通信 docker0 了解 docker containers
  • 更新时间 :
  • 英文 :


我正在浏览 docker 官方文档以了解用户定义桥和默认桥之间的区别。链接到特定页面 - https://docs.docker.com/network/bridge/

在">用户定义的网桥和默认网桥之间的差异"一节的第一点中,指出

如果在默认网桥网络上运行相同的应用程序堆栈, 您需要使用 -p 打开 Web 端口和数据库端口 或 --为每个发布标志。

我不明白这个特定的文本,为什么当它仅由连接到同一网桥的其他容器使用时,需要显式发布(-p(数据库容器的所需端口。我现有的理解是,除非被明确阻止,否则连接到docker0的容器可以自由地相互通信。

所以,这段摘录让我感到困惑。有人可以帮忙吗?

如果你从该页面中删除一件事,那就是如果你使用普通的 Docker 命令,你应该始终docker create network然后在该网络上docker run --net容器。 (Docker Compose 会自动为您执行此操作;Kubernetes的网络模型是根本不同的。

如果您docker run没有--net选项的容器,那么您最终会使用向后兼容的网络模式。 在此模式下("默认网桥网络"(,您引用的页面中的容器默认无法相互通信。 您的两个选项是服务器发布端口 ( docker run -p ( 和客户端连接到主机上已发布的端口,或者服务器公开端口(几乎总是使用 Dockerfile 中的 EXPOSE 指令完成(和客户端--link它。

在这一点上没有真正的理由使用这种"默认"模式,实际上,除了相当旧的脚本化 Docker 设置之外,您引用的段落应该无关紧要。

最新更新