我正在浏览 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 设置之外,您引用的段落应该无关紧要。