Administrator
发布于 2024-02-26 / 197 阅读
0
0

firewalld防火墙开启后无法启动docker的问题

firewalld防火墙开启后无法启动docker的问题

一、出现问题的原因

firewall的底层是使用iptables进行数据过滤,建立在iptables之上,而docker使用iptables来进行网络隔离和管理,这可能会与 Docker 产生冲突。当 firewalld 启动或者重启的时候,将会从 iptables 中移除 DOCKER 的规则,从而影响了 Docker 的正常工作。

也就是说,firewalld和docker都在操作iptables的规则,但是docker和firewalld发生了冲突,导致docker和firewall的设置的不一致,所以出现了问题。

二、解决办法

让docker绕过firewall

我们让docker不修改 iptables 就可以解决问题了:

##修改docker配置
vim /etc/docker/daemon.json
 
# 添加规则
{
...
"experimental" : true,
"iptables": false
}
#设置"experimental" : true这个设置启用 Docker 的实验性特性
#设置 "iptables": false 会禁用 Docker 自动配置 iptables 规则的行为。
 
# 重启 docker
systemctl daemon-reload
systemctl restart docker
 
# 启动容器
docker run -d -p 80:80 nginx
# 查看iptables规则 发现 docker 没有添加规则
iptables --list

#解决docker容器无法访问外网的问题
#开启防火墙NAT网络地址转换
sudo firewall-cmd --zone=public --add-masquerade --permanent

#重新加载防火墙配置
sudo firewall-cmd --reload


评论