关闭iptables,使用firewall
systemctl disable iptables # 禁用服务
systemctl stop iptables # 关闭服务
systemctl status iptables # 查看服务状态
systemctl enable firewalld # 设置防火墙开机自启动
systemctl start firewalld # 开启服务
systemctl status firewalld # 查看服务状态
vi /etc/docker/daemon.json
加入配置:
"iptables": false
示例:
{
"registry-mirrors": ["https://ci10r6ps.mirror.aliyuncs.com"],
"iptables": false
}
保存退出
重启docker使其生效
systemctl restart docker
配置firewall白名单,比如:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.8.172.57" port protocol="tcp" port="8100" accept'
firewall-cmd --reload
解决docker容器无法访问外部网络
可能原因:
宿主机防火墙没有开启net转发导致。
解决方法:
1、查询防火墙是否开启了net转发.no代表尚未开启net转发
firewall-cmd --query-masquerade
no
2、开启net转发
firewall-cmd --zone=public --add-masquerade --permanent
firewall-cmd --reload
3、不需要重启docker,当前容器已恢复正常