RHEL / CentOS 8上的Docker-ce-Docker容器无出站网络访问

问题描述

我已经在RHEL 8上安装了docker-ce,并且一切正常,但是docker容器没有任何网络访问权限。我禁用了防火墙服务,并且selinux处于许可模式。例如,我使用以下命令创建一个运行Alpine的容器:

docker run -it alpine /bin/sh

在容器ifconfig内返回:

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?).

尽管如上所述,即使禁用了防火墙服务,出口也无法工作。

解决方法

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

systemctl restart docker

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...