使用 docker 链接两个容器

使用 docker 链接两个容器

我有两个容器,我将它们链接在一起,因此到达容器 2 的流量首先经过容器 1。我设置容器 2 --net=none。

主机 --- 容器1 --- 容器2

这是我做的:

CONE=$(docker run --privileged -i -t -p 801:80 CONTAINER_ID /bin/bash)
CTWO=$(docker run --privileged -i -t -p 800:80 --net=none CONTAINER_ID /bin/bash)


pipework br1 $CONE 10.1.0.1/8
pipework br1 $CTWO 10.1.0.2/8

docker exec -ti $CONE apt-get install -y iptables
docker exec -ti $CONE iptables -I POSTROUTING -t nat -o eth0 -j MASQUERADE
docker exec -ti $CTWO ip route add default via 10.1.0.1 dev eth1
docker exec -ti $CTWO ping www.google.com #PING OKAY

因此一切正常,但是从主机我无法 ping 容器 2,但反之亦然。

主机中启用了 IP 转发,因此:

cat /proc/sys/net/ipv4/ip_forward
returns 1

这是 CONE 的路由表:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.17.42.1     0.0.0.0         UG    0      0        0 eth0
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 eth1
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0

这是 CTWO 的路由表:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.1.0.1        0.0.0.0         UG    0      0        0 eth1
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 eth1

这是主机的路由表:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.1.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0

我该怎么做才能 ping 通容器 2?

相关内容