Fedora33执行docker system prune后Docker因docker0区域绑定冲突启动失败
解决Fedora 33上Docker执行system prune后无法启动的问题
我之前也碰到过类似的情况,这是Docker网桥docker0和Firewalld区域绑定冲突导致的——执行docker system prune时清理了Docker的网络配置,但Firewalld里的网卡绑定关系没同步清除,Docker重启时要重新初始化网络控制器,就撞了冲突。
快速修复步骤:
- 先彻底停掉Docker服务:
sudo systemctl stop docker - 查一下
docker0当前绑定的Firewalld区域:
你大概率会得到sudo firewall-cmd --get-zone-of-interface=docker0public这类区域名称。 - 把
docker0从这个区域里移除:
(记得把sudo firewall-cmd --zone=public --remove-interface=docker0public换成你上一步查到的实际区域) - 重启Firewalld让配置生效:
sudo systemctl restart firewalld - 重新启动Docker服务:
sudo systemctl start docker - 验证一下Docker是否正常跑起来:
systemctl status docker
永久避免该问题:
要是不想下次重启系统后再踩这个坑,可以加--permanent参数做永久配置:
sudo firewall-cmd --permanent --zone=public --remove-interface=docker0 sudo systemctl restart firewalld
为啥会出这个问题?
Docker启动时会默认创建bridge网络,还要给docker0网卡配置NAT规则。当docker0已经被Firewalld的某个区域绑定后,Docker没法修改它的网络规则,就会抛出ZONE_CONFLICT: 'docker0' already bound to a zone的错误,直接导致守护进程启动失败。
内容的提问来源于stack exchange,提问作者Alon Barad
相关产品推荐
相关产品推荐

