Назад | Перейти на главную страницу

Соединение двух контейнеров с докером

У меня есть два контейнера, которые я связал вместе, поэтому трафик, поступающий в контейнер 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

Итак, все работает нормально, однако с хоста я не могу пинговать контейнер 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

Что мне делать, чтобы пинговать контейнер 2?