# 關閉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,當前容器已恢復正常