Docker-ce on RHEL/CentOS 8 - docker 容器没有出站网络访问

Docker-ce on RHEL/CentOS 8 - No outbound network access for docker containers

我已经在 RHEL 8 上安装了 docker-ce,一切似乎都运行良好,除了 docker 容器没有任何网络访问权限。我禁用了 firewalld 服务并在宽容模式下设置了 selinux。例如,我使用以下命令创建容器 运行 Alpine:

docker run -it alpine /bin/sh

容器内 ifconfig returns:

eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02
      inet addr:172.17.0.2  Bcast:172.17.255.255  Mask:255.255.0.0
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:25 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0
      RX bytes:2101 (2.0 KiB)  TX bytes:0 (0.0 B)

但我无法执行 ping、apk 或任何响应出口的操作。我可以通过指定要与主机绑定的端口来建立入口访问。例如,这有效:

docker run --name docker-nginx -p 80:80 nginx

但是在那个例子中也没有出口。在 RHEL 7 中使用 docker,入口和出口工作正常。如何使用 docker-ce.

在 RHEL 8 上启用出口网络

启用 firewalld 后,我在 systemctl stats firewalld

中注意到这条消息
WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -D FORWARD -i docker0 -o docker0 -j DROP' failed: iptables: Bad rule (does a matching rule exist in that chain?).
WARNING: COMMAND_FAILED: '/usr/sbin/iptables -w10 -D FORWARD -i br-ab206699df7f -o br-ab206699df7f -j DROP' failed: iptables: Bad rule (does a matching rule exist in that chain?).

尽管如前所述,即使禁用了 firewalld 服务,出口也无法正常工作。

正如@larsks 所指出的,问题是我需要在停止防火墙后重新启动 docker-ce 服务。

systemctl restart docker