不同的Docker 1.9networking彼此交谈?

我想创build两个Docker 1.9networking。 networkingA运行一个Web服务器,一个应用程序服务器和一个Postgres服务器(所有容器)。 networkingB运行一个SMTP服务器和其他容器。 我需要在networkingA上的容器到达networkingB.可能吗?

libnetwork实现包含覆盖模式:

覆盖驱动程序使用覆盖networking封装(如VXLAN)实现可跨多个主机的networking。 有关其devise的更多详细信息,请参阅Overlay Driver Design 。

新的本地覆盖networking驱动程序支持本地开箱即用的多主机networking。
这种支持是在libnetwork,一个内置的基于VXLAN的覆盖networking驱动程序和Docker的libkv库的帮助下完成的。

本教程解释了如何使容器彼此交谈,即使它们在不同的机器上,只要它们注册到相同的覆盖networking。

这将涉及首先build立一个K / V(键/值)存储:

https://github.com/docker/dceu_tutorials/raw/master/images/tut6-step1.png

现在您的三个节点已configuration为使用键值存储,您可以在任何节点上创build覆盖networking。 当您创buildnetworking时,它将分配给所有节点。

在任何主机上创build第一个覆盖networking时,Docker还会在每个主机上创build另一个名为docker_gwbridgenetworking。 Docker使用这个networking为容器提供外部访问。

覆盖networking中的每个容器也在docker_gwbridge获得一个eth接口,允许容器访问外部世界。
docker_gwbridge类似于Docker的默认bridgenetworking,但不同于bridge它限制了集装箱间通信(ICC)。
无论存在多less个覆盖networking,Docker都会为每个主机创build一个docker_gwbridge桥networking。

Docker为属于RED覆盖networking的每个容器添加了一个入口/etc/hosts
因此,要从container1访问container2 ,可以简单地使用它的名称。 当容器与覆盖networking连接和断开连接时,Docker会自动更新/etc/hosts

https://github.com/docker/dceu_tutorials/raw/master/images/tut6-step6.png

此时, container2container3可以通过RED覆盖networking进行通信。
他们都在同一个docker_gwbridge但是他们不能使用没有主机端口映射的网桥进行通信。 docker_gwbridge用于所有其他stream量。