Я пытаюсь установить Docker внутри виртуальной машины с debian stretch, доступ к которой мне предоставила моя компания. Просматривая форумы, я прочитал много сообщений, в которых утверждалось, что это работает «из коробки».
Однако, следуя руководствам по установке (я попробовал официальное руководство по установке докеров для debian также как и руководство по установке докеров от digitalocean получение тех же результатов) я сталкиваюсь с одними и теми же ошибками каждый раз, когда устанавливаю docker-ce с помощью apt.
Ошибка выглядит следующим образом (извините, система имеет немецкую локализацию):
update-alternatives: Warnung: Neuinstallation der Alternative /usr/bin/dockerd-ce ist erzwungen, weil Linkgruppe dockerd defekt ist
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.
invoke-rc.d: initscript docker, action "start" failed.
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Thu 2019-03-21 17:46:12 CET; 18ms ago
Docs: https://docs.docker.com
Process: 4481 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE)
Main PID: 4481 (code=exited, status=1/FAILURE)
CPU: 179ms
Mär 21 17:46:12 docker.example.com systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE
Mär 21 17:46:12 docker.example.com systemd[1]: Failed to start Docker Application Container Engine.
Mär 21 17:46:12 docker.example.com systemd[1]: docker.service: Unit entered failed state.
Mär 21 17:46:12 docker.example.com systemd[1]: docker.service: Failed with result 'exit-code'.
dpkg: Fehler beim Bearbeiten des Paketes docker-ce (--configure):
Unterprozess installiertes post-installation-Skript gab den Fehlerwert 1 zurück
Fehler traten auf beim Bearbeiten von:
docker-ce
E: Sub-process /usr/bin/dpkg returned an error code (1)
Когда я запускаю journalctl -xe, я получаю несколько строк с ошибками:
level=error msg="'overlay' not found as a supported filesystem on this host. Please ensure kernel is new enough and has overlay support loaded." storage-driver=overlay2
level=error msg="AUFS was not found in /proc/filesystems" storage-driver=aufs
level=error msg="'overlay' not found as a supported filesystem on this host. Please ensure kernel is new enough and has overlay support loaded." storage-driver=overlay
level=error msg="Failed to built-in GetDriver graph devicemapper /var/lib/docker"
...
Error starting daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: iptables failed: iptables -t nat -N DOCKER: modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.19.4-example/modules.dep.bin'
modprobe: FATAL: Module ip_tables not found in directory /lib/modules/4.19.4-example
iptables v1.6.0: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
(exit status 3)
docker.service: Main process exited, code=exited, status=1/FAILURE
Failed to start Docker Application Container Engine.
Я уже несколько раз перезагружался и проверял наличие iptables перед установкой докера.
Как заставить его работать?
Компания, предоставляющая виртуальную машину, использует debian с более новым ядром. Когда docker искал модули, он блокировал модули для последнего ядра, номер версии которого отличается от номера версии, поставляемой с debian. Разрешение компании установить модули для используемой версии ядра решило проблему.