运行背景

之前centos7服务器上装了docker并且运行良好,但手残误操作导致服务器软重启,再次登录后docker服务启动不了

报错及解决

通过journalctl -xe查看日志发现报错如下

Error starting daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: Iptables not found
docker.service: main process exited, code=exited, status=1/FAILURE
Failed to start Docker Application Container Engine.
Unit docker.service entered failed state.

于是通过yum安装iptables以及iptable-services

yum install -y iptables-services iptables-devel.x86_64 iptables.x86_64

安装之后再次执行systemctl start docker仍然报错,百度后猜测是iptables服务未启动,于是通过systemctl start iptables启动iptables,但仍然报错,继续通过journalctl -xe查找原因
在这里插入图片描述
这个报错里面标红的是IPV4无法启动。所以就去查了关于IPV4无法启动如何解决,网上的解决方法是将/var/lib/docker/network/files目录下的文件全部删除。因为里面的local-kv.db文件记录了docker的网络信息,centos重启可能导致了该文件的损坏,导致网络连接出了问题。但对我来说没用,另外,大家在做删除操作的时候一定要先备份,
后来看最上面在提示/sbin/iptables找不到,就开始查看是不是真的没有,然后从别的服务器发现这个文件是链接的/sbin/xtables-multi,我就也链接了一个。
再次重启docker未报错,但因为之前按IPV4删了/var/lib/docker/network/files,重启docker会生成新的,然后原本的容器没办法直接docker start,后来关闭docker服务,然后将备份的文件拷过来,再重启后容器恢复正常。

其它可能原因

在运行systemctl start docker之前需要

  • daemon-reload
systemctl daemon-reload
  • 关闭防火墙
systemctl disable firewalld
  • 检查是否已经有docker进程在后台运行
ps aux | grep docker
#如果有,kill -9 之后restart
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐