CentOS开启防火墙后,外网无法通过宿主机IP + 端口访问Docker容器的解决办法

问题表现
Docker容器开启的服务,CentOS内部可以访问,用curl  http://127.0.0.1:8011 可以访问。
CentOS的IP,外网可以正常Ping通。
容器对外端口,外网无法Telnet通。
外网无法访问Docker容器网站。


原因
CentOS防火墙的原因,需要允许NAT转发。

 

解决办法

前提是CentOS虚拟机网络要用桥接模式,让虚拟机IP保持跟缩主机同一段IP。


设置防火墙允许NAT转发。

firewall-cmd --zone=public --add-masquerade --permanent

 

把docker0网卡添加到trusted域

firewall-cmd --permanent --zone=trusted --change-interface=docker0

 

防火墙开放容器端口,假如容器对外暴露的端口是8011,那么防火墙要开放这个端口

firewall-cmd --add-port=8011/tcp --permanent

 

然后重启防火墙、重启Docker,重启容器,就可以外网访问Docker网站了。 

firewall-cmd --reload
systemctl restart docker
docker start 容器名

 

posted @ 2021-07-28 17:30  民工黑猫  阅读(2130)  评论(0编辑  收藏  举报