不同的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(键/值)存储:
现在您的三个节点已configuration为使用键值存储,您可以在任何节点上创build覆盖networking。 当您创buildnetworking时,它将分配给所有节点。
在任何主机上创build第一个覆盖networking时,Docker还会在每个主机上创build另一个名为
docker_gwbridge
networking。 Docker使用这个networking为容器提供外部访问。覆盖networking中的每个容器也在
docker_gwbridge
获得一个eth
接口,允许容器访问外部世界。
docker_gwbridge
类似于Docker的默认bridge
networking,但不同于bridge
它限制了集装箱间通信(ICC)。
无论存在多less个覆盖networking,Docker都会为每个主机创build一个docker_gwbridge
桥networking。Docker为属于RED覆盖networking的每个容器添加了一个入口
/etc/hosts
。
因此,要从container1
访问container2
,可以简单地使用它的名称。 当容器与覆盖networking连接和断开连接时,Docker会自动更新/etc/hosts
。
此时,
container2
和container3
可以通过RED
覆盖networking进行通信。
他们都在同一个docker_gwbridge
但是他们不能使用没有主机端口映射的网桥进行通信。docker_gwbridge
用于所有其他stream量。