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

时间:2016-01-11 17:16:58

标签: docker docker-compose docker-networking

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

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

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

如果2个容器在同一个网络中,那么容器上自动公开的ENV vars是否相同?

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

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

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

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

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

1 个答案:

答案 0 :(得分:3)

  

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

不,您现在必须使用容器名称作为其主机名。新的网络功能不知道将使用哪些端口。可以想象这是两台计算机插在同一个网络集线器上。两者都可以通过其主机名来解决另一个问题。

  

是使用正确的容器名称/ IP地址更新的hosts文件?甚至在码头重启后?

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

  

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

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

  

另外,compose看起来有一个简单的设置来链接容器,并且可能会自动化其中的一部分 - 这将构成定义多容器应用程序的方法吗?或者在生产中运行它还为时过早?

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

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

  

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

是的,与overlay network documentation

中详述的Swarm相结合