發現問題 #
剛剛在更新自己的 Ubuntu Server 的時候遇到的問題。跑了 sudo apt-get dist-upgrade -y; reboot
之後,再跑 sudo service docker start
就失敗了。
看了一下 sudo journalctl -u docker.service
,跑出下面的 log:
Apr 21 15:10:47 docker-node-01 systemd[1]: Starting Docker Application Container Engine...
Apr 21 15:10:47 docker-node-01 dockerd[1975]: time="2017-04-21T15:10:47.121785550Z" level=info msg="libcontainerd: new containerd process, pid: 1995"
Apr 21 15:10:47 docker-node-01 dockerd[1975]: Error starting daemon: error initializing graphdriver: driver not supported
Apr 21 15:10:47 docker-node-01 systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE
Apr 21 15:10:47 docker-node-01 systemd[1]: Failed to start Docker Application Container Engine.
Apr 21 15:10:47 docker-node-01 systemd[1]: docker.service: Unit entered failed state.
Apr 21 15:10:47 docker-node-01 systemd[1]: docker.service: Failed with result 'exit-code'.
Apr 21 15:10:47 docker-node-01 systemd[1]: docker.service: Service hold-off time over, scheduling restart.
其中最重要的資訊就是 Error starting daemon: error initializing graphdriver: driver not supported
,原來是 kernel 更新之後 aufs driver 消失了。由於第一次遇到這種狀況,google 了老半天、問了朋友才知道解法。
解決問題 #
sudo apt-get update
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual aufs-tools
sudo reboot
接下來會重開機,開完之後再試試看應該就可以了
sudo service docker start
假如又碰到 Error starting daemon: error initializing graphdriver: /var/lib/docker contains several valid graphdrivers: overlay2, aufs; Please cleanup or explicitly choose storage driver (-s <DRIVER>)
,若你確定你 container 的資料都在 /var/lib/docker/aufs
內,可以移除 /var/lib/docker/overlay2
資料夾,再 launch daemon 一次應該就可以了!
References #
https://docs.docker.com/engine/installation/linux/ubuntu/#recommended-extra-packages-for-trusty-1404
https://meta.discourse.org/t/ubuntu-updates-intefere-with-docker-and-aufs/25039/12
http://stackoverflow.com/questions/37110291/how-to-enable-aufs-on-debian