要让Docker容器的端口映射受系统防火墙(如firewalld或ufw)管理,而不是直接通过iptables,可以按照以下步骤配置:
方法一:禁用Docker的iptables规则
(1)编辑Docker配置文件:
bash
vi /etc/docker/daemon.json
添加以下内容:
bash
{
"iptables": false
}
(2)重启Docker服务:
bash
systemctl restart docker
方法二:与firewalld集成(推荐)
确保firewalld已安装并运行:
bash
systemctl enable --now firewalld
将Docker接口添加到trusted区域:
bash
firewall-cmd --permanent --zone=trusted --add-interface=docker0
允许特定端口通过firewalld:
bash
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
注意事项
1、修改这些设置后,你需要通过firewalld手动管理所有Docker容器的端口访问。
2、某些Docker网络功能可能会受到影响。
3、对于已存在的容器,可能需要重新创建才能使更改生效。