1、报错信息
(iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3306 -j DNAT --to-destination 172.17.0.3:3306 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1))
Error: failed to start containers: c092
2、出现问题的原因
firewalld防火墙的底层是使用iptables进行数据过滤,而docker也是使用iptables进行网络隔离和管理,这就会导致和docker产生冲突。当firewalld启动或者重启的时候,将会从iptables中移除docker的规则,也就影响了docker的启动。
说人话就是:firewalld和docker都在操作iptables的规则,设置不一致从而产生了冲突。
3、解决办法,docker不设置iptables的规则
# 先看看有没有,有的话直接修改,没有的话先创建
sudo mkdir -p /etc/docker
vim daemon.json
{
"experimental" : true,
"iptables": false
}
# 可以直接执行这个
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"experimental" : true,
"iptables": false
}
EOF
4、重新加载,重启docker
systemctl daemon-reload
systemctl restart docker