Сервис Docker больше не запускается из-за ошибки modprobe
Я только что столкнулся с некоторыми проблемами с моим сервером, работающим в Docker, который я не могу исправить самостоятельно. Я использую Docker версии 18.09.0, сборка 4d60db4 с Ubuntu 16.04.5 LTS. В течение дня я заметил, что мои докерские приложения недоступны, поэтому я проверил сервис. При попытке запустить сервис докера с service docker start
, Я получил A dependency job for docker.service failed. See 'journalctl -xe' for details
, При проверке journalctl я получаю следующий вывод:
systemd[1]: Starting Docker Application Container Engine...
-- Subject: Unit docker.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit docker.service has begun starting up.
systemd[1]: Starting containerd container runtime...
-- Subject: Unit containerd.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit containerd.service has begun starting up.
modprobe[811]: modprobe: ERROR: ../libkmod/libkmod.c:514 lookup_builtin_file() could not open builtin file '/lib/modules/4.4.0/modules.builtin.bin'
modprobe[811]: modprobe: FATAL: Module overlay not found in directory /lib/modules/4.4.0
systemd[1]: containerd.service: Control process exited, code=exited status=1
systemd[1]: Failed to start containerd container runtime.
-- Subject: Unit containerd.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit containerd.service has failed.
--
-- The result is failed.
systemd[1]: Dependency failed for Docker Application Container Engine.
-- Subject: Unit docker.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit docker.service has failed.
--
-- The result is dependency.
systemd[1]: docker.service: Job docker.service/start failed with result 'dependency'.
systemd[1]: containerd.service: Unit entered failed state.
systemd[1]: containerd.service: Failed with result 'exit-code'.
systemd[1]: Stopped Docker Application Container Engine.
-- Subject: Unit docker.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit docker.service has finished shutting down.
Я попытался перезагрузить сервер несколько раз. Все остальное в системе работает отлично (почта, резервные копии, веб-сайты).
У меня нет опыта работы с modprobe или с ошибкой в любом случае, поэтому любая подробная помощь будет принята.
заранее спасибо
2 ответа
У меня была такая же ошибка сегодня после обновления docker-ce до версии 18.09.0 в Debian 9. Я не могу дать вам решение для этой версии, но возвращение к версии 18.06.1 все же заставило его начать снова. Для Ubuntu это должно быть:
sudo apt-get install docker-ce=18.06.1~ce~3-0~ubuntu
У вас когда-нибудь работала версия 18.09.0? Моя установка упала сразу после обновления.
Изменить: На самом деле на GitHub есть отчет, связанный с этой проблемой. https://github.com/containerd/containerd/issues/2772
Похоже новый containerd
пытается загрузить модуль наложения, даже если он уже загружен. Модуль оверлея загружен в мою систему, но я не могу найти файл в /lib/modules/
Выясните, есть ли у вас файл (вам, безусловно, следует иметь в наличии Ubuntu 16.04):
find /lib/modules -name "*overlay*"
И можете ли вы загрузить его самостоятельно?
# modprobe overlay
# echo $?
0
# lsmod | grep overlay
overlay 49152 0
Я не знаю, почему Docker не может загрузить его... но если он умный, ему не нужно загружать его, если вы уже загрузили его. Так что, если вы можете загрузить его самостоятельно, попробуйте добавить его в /etc/modules
поэтому он загружается при загрузке (проверьте это снова с помощью lsmod после перезагрузки).
echo overlay >> /etc/modules