今天突然发现运行在 Docker 容器里的 Jenkins 无法登录了。运行 systemctl status docker,看见它的状态是 Failed。试图重启,报告Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.

首先怀疑是 /etc/docker/daemon.json 的格式问题。看起来格式没错。问题依旧。

接着运行 docker -v ,发现是 release candidate 版本,于是卸载,再重装最新的稳定版。问题依旧。

sudo tail -100 /var/log/messages,发现以下信息,于是删除 /var/run/docker.pid 文件。问题依旧。

Error starting daemon: pid file found, ensure docker is not running or delete /var/run/docker.pid

再次sudo tail -100 /var/log/messages,发现以下信息,通过谷歌,找到一个类似问题

Error starting daemon: error while opening volume store metadata database: timeout

运行以下命令,sudo daemon-reload && sudo systemctl start docker重启成功,问题解决

ps axf | grep docker | grep -v grep | awk '{print "kill -9 " $1}' | sudo sh

参考资料

07-05 00:12