解决Linux docker启动不了的问题

错误信息

使用的是阿里云的云主机,四台机器,里面都已经安装好了Docker,用于搭建K8S集群,其中三台的docker没能正常启动。执行docker info ,报错:

image-20200419213927696

这表明docker没有启动成功。

排查过程

通过journalctl -u docker.service 查看docker的日志

image-20200420213748031

通过上面的日志可以看出,由于chmod /var/lib/docker: read-only file system ,/var/lib/docker 为只读权限,每次都启动失败,启动失败太多次,docker就停止启动了(start request repeated too quickly for docker.service)于是执行(root用户):mount -o remount rw /

再次启动:systemctl start docker.service,嗯 再一次报错了。。。。。

image-20200420214432422

这次是由于failed to start daemon: failed to dial "/run/containerd/containerd.sock": unknown service containerd.services.namespaces.v1.Namespaces: not implemented,启动失败次数太多导致停止启动,这个地方试了很多办法都没能搞定。。。终于在Docker daemon and Containerd dockerd out of sync in 18.09 #421 这个issue中看到了这个方法,先将containerd停掉,再启动(发现直接restart不管用,):

1
2
3
4
5
systemctl stop containerd
systemctl start containerd

#启动docker
systemctl start docker.service

总结

Linux中排查docker启动过程,可以通过如下思路:

1
2
3
4
5
6
7
8
9
10
11
12
#查看docker的状态
sudo docker info
#启动正常输出client 和 server的信息

#通用查看docker状态的方式
systemctl status docker.service


#启动失败 查看docker的日志,
journalctl -u docker.service

#根据启动失败日志分析原因,如果是文件权限相关,则修改权限