我已经在RHEL 8上安装了docker-ce,除了docker容器没有任何网络访问之外,一切似乎都运行得很好。我禁用了firewalld服务,并将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?).
尽管如前所述,即使禁用了firewalld服务,egress也无法工作。
发布于 2020-08-31 07:06:24
正如@larsks所指出的,问题是我需要在停止防火墙后重新启动docker-ce服务。
systemctl restart docker
https://stackoverflow.com/questions/63640982
复制相似问题