当前位置: 首页 > 知识库问答 >
问题:

无法连接到wsl 2上debian buster上的Docker守护程序

史谦
2023-03-14

我正在尝试在Windows Subsystem for Linux(WSL)2(在Windows Home build 19033.1上运行)上安装docker。我按照上的说明安装了wsl2https://docs.microsoft.com/en-us/windows/wsl/wsl2-install并从Windows应用商店安装了debian,即debian 10(buster)。它在wsl 2上运行,如下所示:

wsl-l-v
名称状态版本
*Debian运行2

$cat /etc/os-release
PRETTY_NAME=Debian GNU/Linux10(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要安装docker:

sudo apt安装docker.io
sudo docker run hello-world
docker:无法连接到unix:///var/run/docker.sock.Docker守护进程正在运行吗?。

查看docker是否正在运行:

sudo服务docker状态
[FAIL]Docker未运行...失败!

所以我尝试重新启动docker守护进程:

$sudo service docker restart
grep:/etc/fstab:没有这样的文件或目录
[ok]正在启动docker:docker。

找到另一篇关于SO的文章,说我可以通过发布来解决这个问题:

sudo touch/etc/fstab

这似乎起作用了(grep错误不再出现):

$sudo服务docker重启
[ok]启动Docker: docker.

但我还是遇到了同样的问题:

$sudo docker run hello world
docker:无法连接到unix:///var/run/docker.sock.docker守护进程正在运行吗?。

我查看了docker日志,其中充满了错误:

$ 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 html" target="_blank">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

有点不知道这里有什么问题。希望有人能给点建议?

我听从了下面@s-x-tan的建议,他建议我在https://kind.sigs.k8s.io/docs/user/using-wsl2/#updating-内核。这些指示规定:

# 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/

不幸的是,这些命令没有产生与该cp命令期望的相同的dir结构。我没有arch/x86_x64/dir。我确实有一个arch/x86dir,但它不包含start/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/#updating-内核是编写的。如果有帮助,以下是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

仍然希望有人能澄清。

共有2个答案

萧心远
2023-03-14

我也有同样的问题,因为Debian没有4.19的模块。已安装84个microsoft标准内核。不幸的是,Microsoft没有为此内核提供预构建的lib/模块,您必须使用源代码来构建内核https://github.com/microsoft/WSL2-Linux-Kernel.

我试过内核4.9。0-11-amd64从Debian映像中提取为自定义内核(在.wslconfig中),但WSL2无法启动它。因此,没有其他办法。

这是说明:https://kind.sigs.k8s.io/docs/user/using-wsl2/#updating-kernel

构建内核后,运行sudo makemodules_install,然后运行docker:

*docker运行你好-世界

码头工人你好!

此消息显示您的安装似乎工作正常*

涂煌
2023-03-14

在这里发布,以防有人有这个问题,就像我刚刚做的那样。好像和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

我能够开始启动docker服务。

 类似资料:
  • 这是我的设置: -内部程序-慢响 我目前被迫使用Windows进行开发,因此我成为了microsoft insider成员,并以WSL2模式安装了ubuntu。Docker desktop支持WSL2的集成,所以我尝试了它。。。一个星期以来,它工作得完美无缺。今天电脑重启后,我无法让docker再次运行。Ubuntu可以从Docker桌面看到注入的二进制文件,但它不能再连接到windows托管的D

  • 问题内容: 我通常更喜欢使用brew在OSX上管理我的应用程序 我能够安装docker,docker-compose和docker-machine 我没有下载并运行“ Docker for Mac”应用程序。 但是当我尝试跑步时 我已经检查了袜子文件 我还尝试了此建议的解决方案:MacOSXsudodocker无法连接到Docker守护程序。docker守护程序是否在此主机上运行? 但是我得到了这

  • 我有Microsoft Windows 10 Pro版本10.0.19041n/a Build 19041,我按照以下步骤https://docs.Microsoft.com/en-us/Windows/wsl/install-win10使用WLS2在上面安装Ubuntu 20.04 LTS,我按照以下步骤安装Dockerhttps://docs.docker.com/engine/install

  • 我正在运行安装了以下docker软件的Ubuntu:

  • 问题内容: 我在CentOS机器上运行Jenkins和Docker。我有一个詹金斯(Jenkins)工作,可以拉出Github存储库并构建Docker映像。当我尝试运行作业时,出现错误: 即使我通过将jenkins添加到我的docker用户组并重新启动计算机,也会发生这种情况。我该如何解决? 顺便说一句,如果尝试将命令更改为我只是得到错误 问题答案: 在安装了Jenkins和Docker之后。将j

  • 问题内容: 我已经在ubuntu 14.04上安装了docker,它告诉我安装成功。然后我进入,它返回了 我进入了 我尝试了和,得到了相同的答复: 我不知道为什么它返回了这个,我尝试使用来拉ubuntu 并得到了 请告诉我如何解决此问题,如何拉出并运行docker image。和是一样的吗? 问题答案: 您需要将当前用户添加到组中,如下所示: 另外,您可以使用以下环境变量: 然后重新启动系统。正如