Docker:如何连接两座桥

正如您在Docker 1.9之后所了解的,我们可以创build连接容器的桥梁。

我创build了两个自定义网桥:网桥A 172.18.0.1和网桥B 172.19.0.1

现在我在A桥上有一个container1,在B桥上有一个叫做“mailServer”的容器2。

container1需要通过DNS到达container2,我应该怎么做? 因为他们在不同的桥梁上,所以他们不能相互交谈。 我需要一个路由器,可以通过Docker实现吗?

这是Docker的一个新function,我没有find很多信息。 谢谢。

您可以尝试使用veth peer,以便连接两个网桥。 确保你已经重新命名,并分别与你configuration的名字。

 ip link add veth0 type veth peer name veth1 ifconfig veth0 up ifconfig veth1 up brctl addif <D1-A-Bridge> veth0 brctl addif <D2-A-Bridge> veth1 

要将container2连接到container1,也可以将其连接到bridgeB

 $ docker network connect bridgeB container1 

这将允许container1通过IP地址连接到container2,DNS名称仍然必须手动更新afaik。

更多的信息在这里的Dockernetworking指南。

如果要连接两个网桥,则可以使用一对带打开的v-switch的打补丁端口。 以下示例创build网桥br0和br1,将eth0和tap0添加到br0,将tap1添加到br1,然后将br0和br1连接到一对修补程序端口。

  ovs-vsctl add-br br0 ovs-vsctl add-port br0 eth0 ovs-vsctl add-port br0 tap0 ovs-vsctl add-br br1 ovs-vsctl add-port br1 tap1 ovs-vsctl \ -- add-port br0 patch0 \ -- set interface patch0 type=patch options:peer=patch1 \ -- add-port br1 patch1 \ -- set interface patch1 type=patch options:peer=patch0