如何解决网桥错误导致docker启动失败的问题

博主在尝试重启Docker容器时遇到服务启动问题,报错'Error starting daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: Could not create nat/DOCKER chain'。尝试了删除网络目录、手动创建docker0网桥、修改daemon.json配置、卸载重装Docker等方法均未解决问题。最终通过新建自定义网桥docker_new0成功启动Docker,但原因尚不明确,计划进一步研究。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址

问题说明

最近在往docker里面添加一个容器时出现了问题,于是准备重启一下docker服务,谁知道启动不了了,使用dockerd命令启动docker daemon时报错:Error starting daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: Could not create nat/DOCKER chain,错误如下:

使用命令:systemctl start docker.service启动docker的话也会报错:Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details,然后使用命令:systemctl status docker.service查看详细的报错信息:

问题分析

在网上查了很多解决方法,大概有以下几类:

  1. 删除目录(/var/lib/docker/network/):rm -rf /var/lib/docker/network/
  2. 手动添加下docker0网桥:
brctl addbr docker0
ip addr add 172.17.0.1/16 dev docker0
ip link set dev docker0 up
systemctl restart docker
  1. 在/etc/docker/daemon.json中添加内容,然后重新加载daemon.json配置(systemctl daemon-reload),启动docker:
{ "graph": "/mnt/docker-data", "storage-driver": "overlay" } 
  1. 如果daemon.json中配置了国内镜像的话将daemon.json文件后缀改为.conf,然后重新加载daemon.json配置(systemctl daemon-reload),启动docker
  2. 卸载docker,重新安装:

查询安装过的包

yum list installed | grep docker

本机安装过旧版本

docker.x86_64,
docker-client.x86_64,
docker-common.x86_64

删除安装的软件包

yum -y remove docker.x86_64
yum -y remove docker-client.x86_64
yum -y remove docker-common.x86_64

把yum包更新到最新

sudo yum update

安装docker

sudo yum install docker

可惜的是,上面的方法试了以后都没有解决我的问题。

问题解决

最后在一篇文章里Docker 自定义网桥后,无法正常启动问题找到了解决方法:

就是新建自定义网桥docker_new0:

brctl addbr docker_new0

然后docker就可以正常启动使用了,感觉很神奇,还不明白具体是怎么回事,后面会深入研究一下背后的原理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值