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

докер создает контейнеры, которым не предоставлен доступ к хосту

У меня вопрос, очень похожий на этот: Набор правил Iptables, чтобы контейнер докеров мог получить доступ к службе на IP-адресе хоста где моим контейнерам не разрешен доступ к хосту. Проблема с принятым ответом связанного stackoverflow заключается в том, что когда я запускаю iptables -I INPUT -i docker0 -j Accept мои контейнеры все еще не имеют доступа к хосту.

при беге dc up docker compose создает мостовой адаптер следующим образом:

br-ddc5c71a14aa: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:5e:11:84:5b brd ff:ff:ff:ff:ff:ff
    inet 172.20.0.1/16 brd 172.20.255.255 scope global br-ddc5c71a14aa
       valid_lft forever preferred_lft forever
    inet6 fe80::42:5eff:fe11:845b/64 scope link 
       valid_lft forever preferred_lft forever

и iptables настраиваются так:

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         
11722 1171K DOCKER-USER  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
11722 1171K DOCKER-ISOLATION-STAGE-1  all  --  *      *       0.0.0.0/0            0.0.0.0/0           
0     0 ACCEPT     all  --  *      docker0  0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
0     0 DOCKER     all  --  *      docker0  0.0.0.0/0            0.0.0.0/0

Chain DOCKER (2 references)
pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  --  !br-ddc5c71a14aa br-ddc5c71a14aa  0.0.0.0/0            172.20.0.2           tcp dpt:5432
    0     0 ACCEPT     tcp  --  !br-ddc5c71a14aa br-ddc5c71a14aa  0.0.0.0/0            172.20.0.3           tcp dpt:443
    0     0 ACCEPT     tcp  --  !br-ddc5c71a14aa br-ddc5c71a14aa  0.0.0.0/0            172.20.0.3           tcp dpt:80

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
pkts bytes target     prot opt in     out     source               destination         
   0     0 DOCKER-ISOLATION-STAGE-2  all  --  docker0 !docker0  0.0.0.0/0            0.0.0.0/0           
5006  280K DOCKER-ISOLATION-STAGE-2  all  --  br-ddc5c71a14aa !br-ddc5c71a14aa  0.0.0.0/0            0.0.0.0/0

Единственное, что я, кажется, могу сделать, чтобы контейнеры получили доступ к хосту, - это принимать пакеты от мостового адаптера. iptables -I INPUT -i br-ddc5c71a14aa -j ACCEPT.

Я использую Fedora 28, Docker версии 18.06.1-ce, сборку e68fc7a и docker-compose версии 1.22.0, сборку f46880fe. Что мне нужно сделать, чтобы docker / docker compose мог автоматически настраивать iptables, чтобы хост принимал пакеты из контейнеров?