无法在新的Windows终端中使用WSL2启动Docker

15

我最近安装了WSL2并从Microsoft Store安装了Ubuntu。当我使用Sudo service docker start运行docker时,我会收到以下消息:

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

我按照这个答案的步骤进行操作,并完成以下步骤。
    sudo groupadd docker
sudo usermod -aG docker $(whoami)

但是我仍然无法启动docker。当查看Docker日志时,我可以看到以下内容:

CONNECTING" module=grpc 启动守护程序时出错:初始化网络控制器时出错:获取控制器实例时出错:创建NAT链DOCKER失败:iptables报错:iptables -t nat -N DOCKER:iptables v1.6.1:无法初始化iptables表nat':表格不存在(您需要insmod吗?) 可能需要升级iptables或内核。 (退出状态3) `

4个回答

36
我尝试了很多步骤来解决以下错误:

无法初始化iptables表nat': 表不存在(是否需要insmod?)可能需要升级iptables或内核。(退出状态3) `

但是以管理员身份启动终端可以解决问题。即使您运行
sudo service docker start

终端应以管理员身份启动。

4
哦,我简直不敢相信这就是我的问题。 - user1099123
1
太简单了...谢谢! - Dikla
1
以管理员身份启动PowerShell解决了我的问题!非常感谢。 - FonzTech
1
如果您在使用Debian时遇到“CHAIN_ADD failed (No such file or directory): chain PREROUTING”错误,请参考以下链接:https://forums.docker.com/t/failing-to-start-dockerd-failed-to-create-nat-chain-docker/78269/2 - Himbeer
1
过去两天一直在苦苦挣扎,Docker 运行了,但是 hello-world 却没有!这个简单而又有效的技巧真是太神奇了!非常感谢! :-) - robot_alien
这个方法确实有效,但每次都以管理员身份启动它有点麻烦。正确而稳定的解决方案似乎是将发行版明确设置为使用WSL 2,正如这个答案中所述:https://stackoverflow.com/a/73164601/3207147,针对同一个问题。 - undefined

14

6

我可能有点晚,但我遇到了类似的问题,解决方案完全不同。如果有人遇到类似的问题,我在这里发帖。

我遇到的问题

我在新机器上安装了wsl和docker。我无法在wsl2中运行dockerd。像TheGameiswar建议的那样,如果我以管理员身份运行终端,我可以启动dockerd,但我仍然无法运行任何镜像。

根本原因

默认情况下,wsl是版本1(wsl 1),而docker需要wsl2。

解决方案

将默认的wsl版本设置为2。

wsl --set-default-version 2

将安装的发行版设置为wsl2

wsl --set-version  Ubuntu-20.04 2

可以确认 - 我遵循了多种在线指南,即使我确保升级到了WSL 2,令人困惑的是需要设置系统以使用WSL2还需要另外一步操作。 - Gavin C

0

这里有一份很棒的指南在这里,它提供了关于如何使用WSL 2和新版Docker桌面版的最新说明和先决条件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接