如何解决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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。