После обновления Debian Jessie до testing я обнаружил проблему при запуске Docker. Набрав команду systemctl status docker.service
был выведен следующий текст ошибки:
[graphdriver] prior storage driver "aufs" failed: driver not supported Error starting daemon: error initializing graphdriver: driver not supported
Как оказалось, в новых версиях debian была прекращена поставка модуля ядра aufs, так как вместо него в состав ядра была принята файловая система OverlayFS. OverlayFS - это проект SUSE по созданию более прогрессивной замены UnionFS и AUFS.
Основным недостатком ранее существующей файловой системы UnionFS и созданного на её основе ответвления AUFS является излишне усложнённая кодовая база, составляющая примерно 60 тысяч строк кода, не использующая штатную подсистему VFS. Код AUFS и UnionFS очень трудоёмок для сопровождения и не отвечает требованиям к оформлению кода для ядра Linux, что не позволяло включить его в основной состав ядра. Кроме того, производительность и надёжность данных систем оставляет желать лучшего. В рамках проекта OverlayFS предпринята попытка создания компактного, надёжного и высокопроизводительного аналога UnionFS, построенного поверх штатной подсистемы VFS. (opennet.ru)
Замена aufs на overlayfs
Окей, убедили, надо переходить на overlayfs. Чтобы указать Docker, что нужно сменить файловую систему, необходимо создать файл /etc/systemd/system/docker.service со следующим содержанием:
[Service] ExecStart= ExecStart=/usr/bin/docker -H fd:// --storage-driver=overlay
Смысл сего действа вот в чем: создание нового файла /etc/systemd/system/docker.service позволяет перезаписать значение по-умолчанию, расположенное в файле /lib/systemd/system/docker.service, а чтобы docker не ругался на дублирование значения ExecStart, перед заданием нового значения требуется указать ExecStart с пустым новым значением.
Теперь перезапустим docker с помощью команды systemctl daemon-reload
К сожалению, после перехода на другую файловую систему все существующие docker images будут потеряны. Если вы хотите сохранить их, нужно либо загрузиться со старым ядром, либо ещё перед обновлением заранее сохранить их. О том, как это сделать, подробно написано здесь: http://muehe.org/posts/switching-docker-from-aufs-to-devicemapper/