Не удается подключиться к демону Docker на debian buster на wsl 2

Я пытаюсь установить докер в подсистеме Windows для Linux (WSL) 2 (работает на Windows Home build 19033.1). Я установил wsl2 в соответствии с инструкциями на https://docs.microsoft.com/en-us/windows/wsl/wsl2-install и установил debian из Магазина Windows, то есть debian 10 (buster). Он работает на wsl 2, что подтверждается этим:

wsl -l -v
ИМЯ СОСТОЯНИЕ ВЕРСИИ
* Запуск Debian 2

$ cat / etc / os-release
PRETTY_NAME="Debian GNU / Linux 10 (buster)"
NAME = "Debian GNU / Linux"
VERSION_ID = "10"
VERSION = "10 (buster)"
VERSION_CODENAME = buster
ID= debian
HOME_URL= " https://www.debian.org/ "
SUPPORT_URL="https://www.debian.org/support "
BUG_REPORT_URL=" https://bugs.debian.org/ "

Я выполнил инструкции на https://linuxconfig.org/how-to-install-docker-on-debian-10-buster-linux, чтобы установить докер:

sudo apt install docker.io
sudo docker run hello-world
docker: не удается подключиться к демону Docker в unix:///var/run/docker.sock. Демон докера запущен?

Посмотрел, работает ли докер:

sudo service docker status
[FAIL] Docker не запущен... не удалось!

Поэтому я пытаюсь перезапустить демон докера:

$ sudo service docker restart
grep: / etc / fstab: Нет такого файла или каталога
[ ok ] Запуск Docker: docker.

Нашел еще одну статью о SO, в которой говорится, что я могу решить это, выполнив:

sudo touch / etc / fstab

и это, похоже, сработало (ошибка grep больше не появляется):

$ sudo service docker restart
[ ok ] Запуск Docker: docker.

Но у меня все еще та же проблема:

$ sudo docker run hello-world
docker: не удается подключиться к демону Docker в unix:///var/run/docker.sock. Демон докера запущен?

Я посмотрел журнал докеров и там было полно ошибок:

$ cat /var/log/docker.log | grep -i error  
time="2019-11-28T21:48:51.725383200Z" level=warning msg="failed to load plugin io.containerd.snapshotter.v1.btrfs" error="path /var/lib/docker/containerd/daemon/io.containerd.snapshotter.v1.btrfs must be a btrfs filesystem to be used with the btrfs snapshotter"  
time="2019-11-28T21:48:51.726777600Z" level=warning msg="failed to load plugin io.containerd.snapshotter.v1.aufs" error="modprobe aufs failed: \"modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.19.84-microsoft-standard/modules.dep.bin'\\nmodprobe: FATAL: Module aufs not found in directory /lib/modules/4.19.84-microsoft-standard\\n\": exit status 1"  
time="2019-11-28T21:48:51.726982500Z" level=warning msg="failed to load plugin io.containerd.snapshotter.v1.zfs" error="path /var/lib/docker/containerd/daemon/io.containerd.snapshotter.v1.zfs must be a zfs filesystem to be used with the zfs snapshotter"  
time="2019-11-28T21:48:51.727010800Z" level=warning msg="could not use snapshotter aufs in metadata plugin" error="modprobe aufs failed: \"modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.19.84-microsoft-standard/modules.dep.bin'\\nmodprobe: FATAL: Module aufs not found in directory /lib/modules/4.19.84-microsoft-standard\\n\": exit status 1"  
time="2019-11-28T21:48:51.727022700Z" level=warning msg="could not use snapshotter zfs in metadata plugin" error="path /var/lib/docker/containerd/daemon/io.containerd.snapshotter.v1.zfs must be a zfs filesystem to be used with the zfs snapshotter"  
time="2019-11-28T21:48:51.727031100Z" level=warning msg="could not use snapshotter btrfs in metadata plugin" error="path /var/lib/docker/containerd/daemon/io.containerd.snapshotter.v1.btrfs must be a btrfs filesystem to be used with the btrfs snapshotter"  
time="2019-11-28T21:48:51.744791900Z" level=warning msg="Running modprobe nf_nat failed with message: `modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.19.84-microsoft-standard/modules.dep.bin'\nmodprobe: WARNING: Module nf_nat not found in directory /lib/modules/4.19.84-microsoft-standard`, error: exit status 1"  
time="2019-11-28T21:48:51.746095200Z" level=warning msg="Running modprobe xt_conntrack failed with message: `modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.19.84-microsoft-standard/modules.dep.bin'\nmodprobe: WARNING: Module xt_conntrack not found in directory /lib/modules/4.19.84-microsoft-standard`, error: exit status 1"  
time="2019-11-28T21:48:51.768996800Z" level=info msg="stopping event stream following graceful shutdown" error="<nil>" module=libcontainerd namespace=moby  
time="2019-11-28T21:48:51.769171500Z" level=info msg="stopping event stream following graceful shutdown" error="context canceled" module=libcontainerd namespace=plugins.moby
Error starting daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: iptables failed: iptables --wait -t nat -N DOCKER: iptables v1.8.2 (nf_tables):  CHAIN_ADD failed (No such file or directory): chain PREROUTING

Немного потеряно в понимании того, в чем проблема. Надеетесь, что кто-нибудь посоветует?


Я последовал отличному совету @ sx-tan ниже, который рекомендовал следовать инструкциям на https://kind.sigs.k8s.io/docs/user/using-wsl2/. Эти инструкции говорят о выпуске:

# This assumes Ubuntu or Debian, a different step may be needed for RPM based distributions
sudo apt install build-essential flex bison libssl-dev libelf-dev
git clone --depth 1 https://github.com/microsoft/WSL2-Linux-Kernel.git
cd WSL2-Linux-Kernel
make -j4 KCONFIG_CONFIG=Microsoft/config-wsl
mkdir /mnt/c/linuxtemp
cp arch/x86_x64/boot/bzImage /mnt/c/linuxtemp/

К сожалению, команды не создают такой же структуры dir, как это cpкоманда ожидает. у меня нетarch/x86_x64/реж. У меня естьarch/x86 dir, но это не содержит boot/bzImage:

jamiet@DESKTOP-GA45TGH:/mnt/c/Users/jamie/git/github/microsoft/WSL2-Linux-Kernel$ ls arch/x86/boot/
a20.c       code16gcc.h  cpuflags.h              install.sh      pm.c      string.h      video.c
apm.c       compressed   ctype.h                 main.c          pmjump.S  tools         video.h
bioscall.S  copy.S       early_serial_console.c  Makefile        printf.c  tty.c         video-mode.c
bitops.h    cpu.c        edd.c                   memory.c        regs.c    version.c     video-vesa.c
boot.h      cpucheck.c   genimage.sh             mkcpustr.c      setup.ld  vesa.h        video-vga.c
cmdline.c   cpuflags.c   header.S                mtools.conf.in  string.c  video-bios.c

Я следовал точным инструкциям, поэтому могу только догадываться, что репо изменилось с момента написания https://kind.sigs.k8s.io/docs/user/using-wsl2/. Если это поможет, вот каталоги вarch:

jamiet@DESKTOP-GA45TGH:/mnt/c/Users/jamie/git/github/microsoft/WSL2-Linux-Kernel$ ls arch/
alpha  arm    c6x    hexagon  Kconfig  microblaze  nds32  openrisc  powerpc  s390  sparc  unicore32  xtensa
arc    arm64  h8300  ia64     m68k     mips        nios2  parisc    riscv    sh    um     x86

Все еще надеюсь на чью-то ясность.

1 ответ

Публикация здесь на случай, если у кого-то еще возникнет эта проблема, как и у меня. Похоже, это та же проблема, что и https://superuser.com/questions/1468316/which-kernel-moduules-are-really-needed-for-docker-installation

Согласно этому ответу после запуска:

sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

Мне удалось запустить службу докеров.

У меня такая же проблема, потому что в Debian не установлены модули ядра 4.19.84-microsoft-standard. К сожалению, Microsoft не предоставляет предварительно скомпилированные библиотеки lib / modules для этого ядра, вы должны собрать ядро, используя исходный код с https://github.com/microsoft/WSL2-Linux-Kernel.

Я попробовал ядро ​​4.9.0-11-amd64, извлеченное из образа Debian в качестве настраиваемого ядра (в.wslconfig), но WSL2 не смог его загрузить. Так что другого выхода нет.

Вот инструкции: https://kind.sigs.k8s.io/docs/user/using-wsl2/

После сборки ядра запустите sudo make modules_install, затем запустите docker:

*docker run привет-мир

Привет из Докера!

Это сообщение показывает, что ваша установка работает правильно.*

Другие вопросы по тегам