无法启动docker | “Job for docker.service failed because the control process exited with error code“

avatar
作者
猴君
阅读量:0

问题描述

docker无法启动,报错:"Job for docker.service failed because the control process exited with error code"
这个问题网上有很多解决方案,但是试了很多没有解决,遂记下可以解决自己问题的方案以供参考。

在解决过程中出现过多种报错:

failed to start daemon, ensure docker is not running or delete /var/run/docker.pid: process with PID 24464 is still running

failed to start daemon: error while opening volume store metadata database (/var/lib/docker/volumes/metadata.db): timeout


原因分析:

问题分析:docker是由守护进程(daemon)和客户端组成的,一般运行报错带有daemon的时候,可能是守护进程出了问题,或者修改了守护进程的配置文件。同样的,启动不了也可能是守护进程出了问题。


解决方案:

再尝试了各种配置没有问题后,且docker确实已经停止运行了,那就只好用dockerd来排查问题了。因为要启动docker,一般需要先启动docker的守护进程。
原因:dockerd 就是守护进程,负责管理 Docker 容器、镜像、网络和存储等核心功能。当你在命令行中使用 docker 命令时,实际上是在与 dockerd 守护进程进行通信。

实践开始:

#输入命令: dockerd #报错: INFO[2024-05-08T18:07:11.413186406+08:00] Starting up                                   failed to start daemon, ensure docker is not running or delete /var/run/docker.pid: process with PID 24464 is still running #根据提示,确保docker关闭了,删除这个文件 rm /var/run/docker.pid #再检查dockerd dockerd # 如果没有报错,就可以去启动docker了,我还有以下的报错: INFO[2024-05-08T20:40:06.361088244+08:00] Starting up                                   failed to start daemon: error while opening volume store metadata database (/var/lib/docker/volumes/metadata.db): timeout # 我是通过输入下面的命令解决的 ps axf | grep docker | grep -v grep | awk '{print "kill -9 " $1}' | sudo sh # 再次检查 dockerd # 没有报错了 `crtl + c` 或者 `crtl + z`退出 # 重启docker systemctl start docker  

如果后续使用docker不能正常运行,一使用docker命令就报错ERROR: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 那请看另一篇文章docker无法使用,报错无法连接守护进程

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!