Docker链接容器,Docker Networks,Compose Networks - 我们现在应该如何"链接"容器

Mat*_*son 6 docker docker-compose docker-networking

我有一个现有的应用程序,包含4个在同一主机上运行的docker容器.它们已使用该link命令链接在一起.

但是,在对docker进行一些升级后,该link行为已被弃用,并且似乎已更改.我们遇到的问题是容器现在正在失去彼此的链接.

所以,docker说要使用新Network功能而不是linked容器.但我看不出它是如何工作的.

如果2个容器在同一个网络中,ENV那么容器上自动暴露的相同变量就像链接一样吗?

或者是使用正确的容器名称/ IP地址更新主机文件?即使经过一次docker restart

我在文档中看不到容器如何在其网络中找到另一个容器的位置?

此外,compose看起来有一个简单的设置来链接容器,并可能自动化其中一些 - 将组成定义多容器应用程序的方式?或者在生产中运行它还为时尚早?

是否也compose支持多个主机配置?

在未来的某个时刻,我们可能需要将其中一个容器移动到不同的主机....

Tho*_*eil 3

\n

如果 2 个容器位于同一网络中,是否会自动在容器上公开相同的 ENV 变量,就好像它们已链接一样?

\n
\n\n

不,您现在必须使用容器名称作为其主机名。新的网络功能不知道将使用哪些端口。可以将其视为插入同一网络集线器的两台计算机。两者都可以通过主机名来寻址对方。

\n\n
\n

主机文件是否更新为正确的容器名称/IP 地址?即使在 docker 重新启动之后?

\n
\n\n

是的,/etc/hosts属于网络一部分的所有容器的文件将由 docker 引擎实时更新。

\n\n
\n

我在文档中看不到容器如何找到其网络中另一个容器的位置?

\n
\n\n

使用容器名称。请参阅使用网络命令文档的连接容器部分:\n连接后,容器可以使用另一个容器\xe2\x80\x99s IP 地址或名称进行通信。

\n\n
\n

此外,Compose 看起来有一个用于链接容器的简单设置,并且可以自动化其中一些 - Compose 是否是定义多容器应用程序的方法?或者现在在生产中运行它还为时过早吗?

\n
\n\n

Compose 通过提供该--x-networking选项来支持新的网络功能(测试版)。您还不应该在生产中使用它(当前的 Compose 版本是 1.5)。

\n\n

此外,当前的实现有点不方便,因为我们必须使用完整的容器名称,它由项目名称+ _+容器名称+组成_1。文档说下一个版本(当前版本是 1.5)将改进这一点,这样我们就不必担心项目名称来寻址容器。

\n\n
\n

compose 也支持多主机配置吗?

\n
\n\n

是的,与覆盖网络文档中详细介绍的 Swarm 结合使用

\n