我的 Docker 无法在我的 Windows 10 Pro 上启动

问题描述

我在 Windows 10 专业版 PC 上设置 Docker 时遇到了一些问题。我尝试打开时收到此崩溃报告:

Crash Report screenshot

这是框内的文字:

System.InvalidOperationException:
Failed to deploy distro docker-desktop to C:\Users\Imogen\AppData\Local\Docker\wsl\distro: exit code: -1
 stdout: Access is denied.


 stderr: 
   at Docker.ApiServices.WSL2.WslShortLivedCommandResult.LogAndThrowIfUnexpectedExitCode(String prefix,ILogger log,Int32 expectedExitCode) in C:\workspaces\PR-15138\src\github.com\docker\pinata\win\src\Docker.ApiServices\WSL2\WslCommand.cs:line 146
   at Docker.Engines.WSL2.WSL2Provisioning.<DeployDistroAsync>d__17.MoveNext() in C:\workspaces\PR-15138\src\github.com\docker\pinata\win\src\Docker.Desktop\Engines\WSL2\WSL2Provisioning.cs:line 169
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Docker.Engines.WSL2.WSL2Provisioning.<ProvisionAsync>d__8.MoveNext() in C:\workspaces\PR-15138\src\github.com\docker\pinata\win\src\Docker.Desktop\Engines\WSL2\WSL2Provisioning.cs:line 78
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Docker.Engines.WSL2.LinuxWSL2Engine.<DoStartAsync>d__25.MoveNext() in C:\workspaces\PR-15138\src\github.com\docker\pinata\win\src\Docker.Desktop\Engines\WSL2\LinuxWSL2Engine.cs:line 99
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Docker.ApiServices.StateMachines.TaskExtensions.<WrapAsyncInCancellationException>d__0.MoveNext() in C:\workspaces\PR-15138\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\TaskExtensions.cs:line 29
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Docker.ApiServices.StateMachines.StartTransition.<DoRunAsync>d__5.MoveNext() in C:\workspaces\PR-15138\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\StartTransition.cs:line 67
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Docker.ApiServices.StateMachines.StartTransition.<DoRunAsync>d__5.MoveNext() in C:\workspaces\PR-15138\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\StartTransition.cs:line 92

我已检查我的可视化设置并已启用。我的 BIOS 是旧版,不确定 Docker 是否需要 UEFI 固件设置。我的 Hyper-V 也在 Windows 功能中启用。我也一直在使用授权的 cmd 访问 docker。任何意见或建议将不胜感激!

解决方法

发生这种情况是因为 WSL2 和 Docker 之间不兼容。

如果您运行 wsl -l -v,我很确定您会看到:

enter image description here

如您所见,Debian/Ubuntu/kali-linux 的 VERSION 设置为 2。

但 docker-desktop 也在使用版本 2。

我的解决方案是

  1. 打开开始菜单并卸载 Debian/Ubuntu/kali-linux

enter image description here

  1. 卸载 Docker
  2. 转到控制面板 > 程序 > 程序和功能并禁用适用于 Linux 的 Windows 子系统

enter image description here

  1. 现在重启你的机器。
  2. 重新登录,再次启用适用于 Linux 的 Windows 子系统并重新安装 Debian/Ubuntu/kali-linux
  3. 现在再次安装 Docker,但这次在此步骤中取消勾选“为 WSL 2 安装所需的 Windows 组件”

enter image description here

..我知道这不是个好消息,但我就是这样解决的。

将 WSL2 降级到 WSL1 无济于事。

,

Docker 桌面和 Docker 引擎在 Windows 10 上从来没有为我工作过,它真的很不稳定。幸运的是,您可以仅在 WSL 2 Linux 发行版上运行 Docker,这让您更加安心。如果有兴趣让 docker 在 Windows 上完美运行,请安装 WSL 2 并选择任何发行版(我的情况是 Ubuntu),然后按照 this 文章设置 Docker。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...