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
我已经在 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