在 Linux 服务器重启后,Docker 无法启动问题解决

环境

  • Ubuntu 16.04
  • Docker version 20.10.7

问题排查

使用 systemctl restart docker 出现如下错误:

1
2
3
Job for docker.service canceled.
# 使用 service docker start 则会出现
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 查看详细日志出现:

1
2
3
4
5
Dec 21 09:26:48 ecs-60a8-0618160 systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE
Dec 21 09:26:48 ecs-60a8-0618160 systemd[1]: Failed to start Docker Application Container Engine.
Dec 21 09:26:48 ecs-60a8-0618160 systemd[1]: docker.service: Unit entered failed state.
Dec 21 09:26:48 ecs-60a8-0618160 systemd[1]: docker.service: Failed with result 'exit-code'.

注意:此处显示的日志中并没有出现问题的原因,只是告诉你启动失败了

查找具体原因需使用 journalctl -xe,报错如下 (只截取了主要的报错部分):

1
2
3
4
5
6
-- Unit emergency.service has finished shutting down.
Dec 21 10:40:45 ecs-60a8-0618160 mount[2876]: mount: special device 192.168.0.177:/ does not exist
Dec 21 10:40:45 ecs-60a8-0618160 systemd[1]: mnt_nas-jpstore.mount: Mount process exited, code=exited status=32
Dec 21 10:40:45 ecs-60a8-0618160 systemd[1]: Failed to mount /mnt_nas.
-- Subject: Unit mnt_nas-jpstore.mount has failed

其中,明显提示需挂载一个/mnt_nas目录,但是挂载失败,所以导致docker启动失败。

解决

  • 将所需挂载的目录以重启之前的方式挂载

  • 重启docker

    1
    service docker restart
  • 查看docker启动状态

    1
    service docker status
  • docker重启后需关注所需启动的服务是否自动重启了,如果没有,还需手动将服务启动

  • 总结

    ​ 通过这次的排查过程发现,服务的启动是否成功可能与一些外在的关联有关系,我们所部署的服务与上述报错的目录并无关联,但是不挂载该目录的话是无法启动成功的,所以具体问题还需根据报错中的详细日志去解决。