ubuntu16.04-docker-aufs

Posted by Kakashi on 2016-08-22
Words 462 and Reading Time 1 Minutes
Viewed Times

Background

事情是這樣的,前陣子在 AWS 上面使用最新的 ubuntu image 來建置 production 的環境,大家都知道 ubuntu 16.04 已經採用萬惡的 systemd 來管理 ubuntu 上面的 process,而在我開開心心使用 systemd 來管理我的 docker 時,就這麼發生了意外,每當我打好 AMI 再使用這個 AMI 開機時,就會發現 docker 掛了,而且時好時壞,讓我全無頭緒。

追查

再重開機後看了 /var/log/syslog,裡面馬上發現了下列這個錯誤

1
2
ERRO[0000] [graphdriver] prior storage driver "aufs" failed: driver not supported
FATA[0000] Error starting daemon: error initializing graphdriver: driver not supported

原來是 aufs 沒有掛上去,不過奇怪的是,我明明已經照著 docker 文件 上面安裝好了,而且在開機前也 run 得很開心,究竟是為什麼呢?

備註: Aufs 沒有被包在原生的 kernel 裡面,所以按照文件要使用 sudo apt-get install linux-image-extra-uname -r 安裝

原因

在追查了一陣子後才知道,原來是因為裝好後,還要使用 modprobe aufs ,這樣之後重開機才會自動載入啊,docker 文件好像好像沒看到這點,而詳細能解決這個問題的答案,在看懂了這兩篇後才懂:

解決的方法就是用

1
sudo apt-get install linux-image-extra-`uname -r` && sudo modprobe aufs

之後要升級食用
1
sudo apt-get update && sudo apt-get upgrade && apt-get -y install linux-image-extra-$(uname -r) aufs-tools

感想

這個坑在 ubuntu 上面真是很煩,希望 docker 文件趕快補上啊啊啊,另外如果不想用 aufs ,其實也可以用 overlayfs,這個 kernel 就有直接支援,所以就不用搞那麼多奇奇怪怪的東西了。