第一種情況: 可能是你的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將無法啟動
。