问题描述

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无法使用,报错无法连接守护进程

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐