6

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

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

因此,docker 说要在ed 容器上使用新Network功能。link但我看不出这是如何工作的。

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

或者是否使用正确的容器名称/IP 地址更新了主机文件?即使在docker restart?

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

此外,compose看起来有一个用于链接容器的简单设置,并且可能会自动执行其中的一些操作 - 组合是定义多容器应用程序的方式吗?还是在生产中运行它还为时过早?

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

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

4

1 回答 1

3

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

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

是否使用正确的容器名称/IP 地址更新了主机文件?即使在 docker restart 之后?

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

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

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

此外,compose 看起来有一个用于链接容器的简单设置,并且可能会自动执行其中的一些操作 - compose 会是定义多容器应用程序的方式吗?还是在生产中运行它还为时过早?

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

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

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

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

于 2016-01-11T18:23:16.623 回答