第一种情况: 可能是你的selinux没有disabled,导致了守护docker的deamon进程启动不了
查看系统日志如果发现下列信息:
May 7 12:34:14 localhost dockerd-current: time="2018-05-07T12:34:14.856207519+08:00" level=info msg="libcontainerd: new containerd process, pid: 37123"
May 7 12:34:16 localhost dockerd-current: Error starting daemon: SELinux is not supported with the overlay2 graph driver on this kernel. Either boot into a newer kernel or disable selinux in docker (--selinux-enabled=false)
May 7 12:34:16 localhost systemd: docker.service: main process exited, code=exited, status=1/FAILURE
(启动守护进程错误:SELinux不支持这个内核上的overlay2图形驱动程序。要么引导到新内核,要么在docker中禁用selinux (- selinux-enabled=false))
说明:在我们装完一个系统时,当我们的selinux状态是enforcing的时候,我们做的第一件事可能就是临时修改为permissive,而修改配置文件为disabled,在docker容器死掉之前发现系统被重启过一次,怀疑问题原因为重启前和重启后selinux状态不一致导致。
最后关于这个问题得出的结论是:在创建容器的时候selinux状态为permissive,而重启后selinux状态为disabled,导致容器创建时和启动时selinux上下文不一致,原先正常的容器启动失败。解决方法是修改配置文件为permissive,重启系统。
同时我们忽略了一个问题,permissive是一个中立的状态,但不代表它没有自己的态度。
第二种情况:
查看文件系统 /etc/docker/daemon.json 有没有这个文件,没有测创建它包括二级目录 docker
在daemon.json文件中输入以下内容:
{
"storage-driver"
:
"devicemapper" }
如果daemon.json
文件包含格式不正确的JSON,
Docker将无法启动
。
来源:oschina
链接:https://my.oschina.net/u/4409548/blog/3987120