Windows 11上使用WSL 2无法启动Docker

20

我正在尝试使用WSL 2安装Docker并运行一个Dockerfile。我已经下载了Docker Desktop,但是在按照快速入门指南操作时,遇到了以下错误:

docker: error during connect: This error may indicate that the docker daemon is not running.: Post "http://%2F%2F.%2Fpipe%d2Fdocker_engine/v1.24/containers/create?name=repo": open //./pipe/docker_enginer: The system cannot find the file specified.

我将com.docker.service设置为在任务管理器中运行,并执行了:

“c:\Program Files\Docker\Docker\DockerCli.exe” -SwitchDaemon

我还尝试过退出 Docker Desktop 并以管理员模式重新打开它,但仍然收到 Docker Desktop 已停止的消息。

如果有其他选项,请告诉我,谢谢!


你的DockerDesktop版本是什么? - IsaacCisneros
13个回答

36

我用以下方法解决了这个问题:

  1. 删除配置文件 AppData/Roaming/Docker/settings.json
  2. 启动Docker桌面应用(它会创建新的默认settings.json文件)

你需要重新配置设置,所以最好保存旧的settings.json文件并将其与新文件进行比较。


2
在我的电脑上使用docker版本 20.10.17, build 100c701 无法工作。 - OpenStack
在我使用的 Windows 11 Education 22H2 (版本为 22621.819) 上,我最终成功启动了 Docker Desktop 4 (版本为 4.13.1-90346) 。在删除了 %AppData%\Docker\settings.json 文件后,Docker 在启动时重新创建了该文件,并且没有因此丢失任何容器、镜像或卷。感谢! - Erick Petrucelli
在我的情况下,我还必须以管理员身份运行 wsl --update - Tiago Martins Peres

13
如果您正在运行 Docker Desktop for Windows 4.5.0 版本,则应注意一个现有问题,即安装后选择的默认后端不正确。
您可以通过编辑位于 %AppData%\Docker\settings.json(完整路径:C:\Users\%UserName%\AppData\Roaming\Docker\settings.json)的文件来手动切换到正确的后端。在文件底部,将 wslEngineEnabled 字段的值更改为 true。之后,Docker Desktop 应该能够正确启动。
用户 mccaa25 在此处提到了类似的问题和解决方案:https://github.com/docker/for-win/issues/12546

1
对于 DockerDesktop 4.5.0,这是被接受的答案。也许它被踩是因为它写得不好。我尝试过编辑,但编辑队列已满。我只想补充一点,这是一个已知问题,因为当我联系 Docker 支持时,他们指向了同样的解决方案。“在 %APPDATA%\Docker\settings.json(有时是 %APPDATA%\Roaming\Docker\settings.json)文件中将 wslEngineEnabled 值更改为 true”。 - IsaacCisneros
谢谢!我已经将您的澄清添加到主帖中。由于这是我在StackOverflow上的第一个答案,您或其他人能告诉我它写得有多糟糕吗? - sudo
1
如果您正在运行 Docker Desktop for Windows 4.5.0,则应该注意到一个现有问题,即安装后选择的默认后端不正确。您可以等待 Docker Desktop 4.5.1 的发布并进行更新,或者同时可以通过编辑位于以下位置的文件手动切换到正确的后端:%APPDATA%\Docker\settings.json(有时是%APPDATA%\Roaming\Docker\settings.json),并在文件底部将 wslEngineEnabled 字段的值更改为 true。之后,Docker Desktop 应该能够正确启动。 - IsaacCisneros
1
通常直接回答链接是不好的,因为你无法控制它们。引用解决方案的方法还可以,但更好的方法是尝试用自己的话解释解决方案,然后只作为脚注引用GitHub页面。请参见我上面的示例答案。 - IsaacCisneros
我已经发送了一份编辑,所以我们可以等待它是否被批准。 - IsaacCisneros
显示剩余2条评论

10

最新版本4.5.0对我也无效,降级到4.4.4才可以使用。可能是最新版本存在问题。

查看发布说明和旧版本请点击这里

注意:你可以先安装一个旧版本,再更新到最新的版本4.5.0


是的,你说得对。我安装了4.4.4,然后更新到4.51没有问题。非常感谢。 - CumaTekin
你救了我的一天。4.9.1 对我来说无法启动,但 4.4.4 却没有问题。想知道 Docker 的开发人员在发布产品之前如何测试他们的产品。 - Julian
降级到4.4.4对我来说有效,谢谢! - Zulfikar Ahmad

9

哇!我花了好几天的时间才让Docker在Windows 11上工作。最终,按照 @GinglrBell 的建议,我将其降级到4.4.4版本,这才实现了。这是一个链接 Docker version 4.4.4

确保已安装WSL并启用虚拟化。如果尝试打开WSL时出现错误提示要求您在BIOS中启用虚拟化,请以管理员身份在powershell中运行此命令:bcdedit /set hypervisorlaunchtype auto (Docker src)。然后重新启动电脑。


5

我今天遇到了这个问题,下面是解决方法 - 要先安装 WSL 2。我的步骤大部分来自于这里

  1. 以管理员身份打开 PowerShell。
  2. wsl -l -v # Windows Subsystem for Linux 没有已安装的发行版。
  3. 此处安装 Linux 内核更新 # 在我的情况下是基于 x64 的。
  4. wsl --set-default-version 2。
  5. wsl --list --online # 显示多个 Linux 发行版,选择最近的一个。
  6. wsl --install -d Ubuntu-20.04 # 然后创建默认的 Linux 用户名和密码。
  7. 这里安装 Windows Docker Desktop # 现在可以成功启动。

在 Windows 10 21H2 上,安装内核更新并设置默认的 WSL 版本之一对我有所帮助。 - obaylis

2

我能够通过按照Microsoft指南中所述的方法安装Linux内核更新包来解决我的机器上的这个问题。


我在网上尝试了几乎所有的方法,只有这个方法让它起作用了。谢谢! - assaf.gov

2

我通过启用Windows功能“Windows Hypervisor Platform”并重新启动计算机来解决了这个问题。

我安装了Docker Desktop v4.16.2


1

成功切换到Windows容器(Docker v4.9.0)。

我的操作是在settings.json中更改以下内容:

"useWindowsContainers": true, "wslEngineEnabled": true,

还将文件夹设置安全性:

C:\ProgramData\Docker (我将“所有人”设置为完全控制。)

之后,我使用任务栏图标内容菜单中的“切换到Windows容器”功能。


1

我尝试了Janne Rantala的方法。

但是几天后同样的问题又出现了。

我的最终解决方案是卸载Docker Desktop,然后以管理员身份下载并运行安装文件

之后该问题再也没有出现。


0
今天在尝试在全新安装的Windows 11上运行Docker桌面版时,我遇到了这个问题。 我通过在Windows上安装WSL并重新启动系统来解决了这个问题。 请参考微软官方页面:如何在Windows上安装WSL并运行Linux

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