Docker: 如何连接两个网桥
Docker: how to connect two bridges
如你所知,在 Docker 1.9 之后,我们可以创建连接容器的桥梁。
我创建了两个自定义桥:桥 A 172.18.0.1
和桥 B 172.19.0.1
。
现在我在桥 A 上有一个容器 1,在桥 B 上有一个名为 "mailServer" 的容器 2。
container1 需要通过 DNS 访问 container2,我应该怎么做?因为他们在不同的桥上,所以他们不能互相交谈。我需要路由器吗?我可以通过 Docker 实现吗?
这是Docker的新功能,我没有找到太多信息。谢谢
您可以尝试使用veth peer 连接两个网桥。确保您分别使用您配置的重命名和名称。
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
如果你想连接两个网桥,你可以使用一对
使用打开的 v-switch 修补端口。下面的例子创建网桥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
要将 container2 连接到 container1,您还可以将它连接到 bridgeB
$ docker network connect bridgeB container1
这将允许 container1 通过 IP 地址连接到 container2,DNS 名称仍然需要手动更新 afaik。
Docker 网络指南 here 中有更多信息。
在过滤器table中设置Forward链,允许Bridge-A和Bridge-Bforward.if你想上网,在nat的Postrouting链中设置伪装table
如你所知,在 Docker 1.9 之后,我们可以创建连接容器的桥梁。
我创建了两个自定义桥:桥 A 172.18.0.1
和桥 B 172.19.0.1
。
现在我在桥 A 上有一个容器 1,在桥 B 上有一个名为 "mailServer" 的容器 2。
container1 需要通过 DNS 访问 container2,我应该怎么做?因为他们在不同的桥上,所以他们不能互相交谈。我需要路由器吗?我可以通过 Docker 实现吗?
这是Docker的新功能,我没有找到太多信息。谢谢
您可以尝试使用veth peer 连接两个网桥。确保您分别使用您配置的重命名和名称。
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
如果你想连接两个网桥,你可以使用一对 使用打开的 v-switch 修补端口。下面的例子创建网桥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
要将 container2 连接到 container1,您还可以将它连接到 bridgeB
$ docker network connect bridgeB container1
这将允许 container1 通过 IP 地址连接到 container2,DNS 名称仍然需要手动更新 afaik。
Docker 网络指南 here 中有更多信息。
在过滤器table中设置Forward链,允许Bridge-A和Bridge-Bforward.if你想上网,在nat的Postrouting链中设置伪装table