我有一个现有的应用程序,由在同一主机上运行的 4 个 docker 容器组成。它们已通过以下方式连接在一起link
命令。
然而,在对docker进行了一些升级之后,link
行为已被弃用,并且似乎发生了变化。我们遇到的问题是容器现在失去了彼此的链接。
所以,docker 说使用新的Network
功能结束link
ed 容器。但我看不出这是如何运作的。
如果2个容器在同一个网络中,则它们是相同的ENV
变量自动暴露在容器上,就好像它们是链接的一样?
或者是否使用正确的容器名称/IP 地址更新了主机文件?即使在一个docker restart
?
我在文档中看不到容器如何找到其网络中另一个容器的位置?
Also, compose
看起来有一个简单的设置来链接容器,并且可以自动化其中一些 - compose 会是定义多容器应用程序的方法吗?或者现在在生产中运行它还为时过早吗?
Does compose
还支持多主机配置吗?
在未来的某个时候,我们可能需要将其中一个容器移动到另一台主机......
如果 2 个容器位于同一网络中,是否会自动在容器上公开相同的 ENV 变量,就好像它们已链接一样?
不,您现在必须使用容器名称作为其主机名。新的网络功能不知道将使用哪些端口。可以将其视为插入同一网络集线器的两台计算机。两者都可以通过主机名来寻址对方。
主机文件是否更新为正确的容器名称/IP 地址?即使在 docker 重新启动之后?
yes, /etc/hosts
属于网络一部分的所有容器的文件将由 docker 引擎实时更新。
我在文档中看不到容器如何找到其网络中另一个容器的位置?
使用容器名称。请参阅连接容器 https://docs.docker.com/engine/userguide/networking/work-with-networks/#connect-containers的部分使用网络命令 doc:
连接后,容器可以使用另一个容器的 IP 地址或名称进行通信。
此外,Compose 看起来有一个用于链接容器的简单设置,并且可以自动化其中一些 - Compose 是否是定义多容器应用程序的方法?或者现在在生产中运行它还为时过早吗?
Compose 通过提供以下功能来支持新的网络功能(测试版)--x-networking
选项。你不应该使用它尚未投入生产(当前 Compose 版本是 1.5)。
此外,当前的实现有点不方便,因为我们必须使用完整的容器名称,该名称由项目名 + _
+ 容器名称 + _1
. The 文档 https://docs.docker.com/compose/networking/说下一个版本(当前版本是 1.5)将改进这一点,这样我们就不必担心项目名来寻址容器。
compose 也支持多主机配置吗?
是的,与 Swarm 结合使用,详见覆盖网络文档 https://docs.docker.com/engine/userguide/networking/get-started-overlay/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)