docker compose 容器无权访问主机

docker compose 容器无权访问主机

我有一个与这个非常相似的问题:Iptables 规则集,以便 docker 容器可以访问主机 IP 上的服务我的容器不被允许访问主机。链接的 stackoverflow 接受答案的问题是,当我运行时,iptables -I INPUT -i docker0 -j Accept我的容器仍然没有被授予对主机的访问权限。

运行dc updocker 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 让主机接受来自容器的数据包?

相关内容