Docker链接容器,Docker Networks,Compose Networks – 我们应该如何“链接”容器

我有一个现有的应用程序,包括在同一主机上运行的4个docker集装箱。 他们已经使用link命令链接在一起。

但是,在docker的一些升级后, link行为已被弃用,并且似乎改变了。 我们现在遇到的问题是集装箱正在失去彼此的联系。

因此,docker说,使用新的Networkfunction通过link容器。 但我不明白这是如何工作的。

如果两个容器在同一个networking中,是否相同的ENVvariables自动暴露在容器上,就好像它们已经链接了一样?

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

在文档中我看不到一个容器如何在networking中find另一个容器的位置?

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

compose支持多主机configuration吗?

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

如果两个容器在同一个networking中,是否相同的ENVvariables自动暴露在容器上,就好像它们已经链接了一样?

不,您现在必须使用容器名称作为主机名。 新的networkingfunction不知道将使用哪个端口。 把这个想象成两台电脑插在同一个networking集线器上。 两者都可以通过其主机名来解决另一个问题。

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

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

在文档中我看不到一个容器如何在networking中find另一个容器的位置?

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

另外,撰写看起来有一个简单的连接容器的设置,并可能自动化一些 – 将构成定义多容器应用程序的方式? 或者是在生产中运行它还为时过早?

Compose通过提供--x-networking选项来支持新的networkingfunction。 你不应该在生产中使用它(目前的Compose版本是1.5)。

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

组成支持多主机configuration吗?

是的,与覆盖networking文档中详述的Swarm相结合