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

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

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

因此,docker表示要在链接容器上使用新的网络功能.但我看不出它是如何工作的.

如果2个容器在同一个网络中,那么容器上自动暴露的ENV变量是否相同?

或者是使用正确的容器名称/ IP地址更新主机文件?即使码头重启后?

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

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

是否还支持多个主机配置?

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

最佳答案

If 2 containers are in the same network, are the same ENV vars automatically exposed on the containers as if they were linked?

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

is the hosts file updated with the correct container name / ip addresses ? Even after a docker restart ?

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

I can’t see in the docs how a container can find the location of another in its network?

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

Also, compose looks to have a simple set up for linking containers, and may automate some of this – would compose be the way to go for defining multi container apps? Or is it too soon to run it in production?

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

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

Does compose support multiple host configuration as well?

是的,与overlay network documentation中详述的Swarm相结合

转载注明原文:Docker链接容器,Docker Networks,Compose Networks – 我们现在应该如何“链接”容器 - 代码日志