【DEBUG】Docker 启动失败


错误信息

Docker 启动时出现如下错误:

System.InvalidOperationException:
Failed to deploy distro docker-desktop to C:\Users\14606\AppData\Local\Docker\wsl\distro: exit code: -1

详细错误信息:

System.InvalidOperationException:
Failed to deploy distro docker-desktop to C:\Users\14606\AppData\Local\Docker\wsl\distro: exit code: -1
 stdout: �|�~~b
N0Rc�[�v_0
stderr: 
   在 Docker.ApiServices.WSL2.WslShortLivedCommandResult.LogAndThrowIfUnexpectedExitCode(String prefix, ILogger log, Int32 expectedExitCode) 位置 C:\workspaces\PR-16360\src\github.com\docker\pinata\win\src\Docker.ApiServices\WSL2\WslCommand.cs:行号 146
   在 Docker.Engines.WSL2.WSL2Provisioning.<DeployDistroAsync>d__17.MoveNext() 位置 C:\workspaces\PR-16360\src\github.com\docker\pinata\win\src\Docker.Engines\WSL2\WSL2Provisioning.cs:行号 168
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   在 Docker.Engines.WSL2.WSL2Provisioning.<ProvisionAsync>d__8.MoveNext() 位置 C:\workspaces\PR-16360\src\github.com\docker\pinata\win\src\Docker.Engines\WSL2\WSL2Provisioning.cs:行号 77
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   在 Docker.Engines.WSL2.LinuxWSL2Engine.<DoStartAsync>d__28.MoveNext() 位置 C:\workspaces\PR-16360\src\github.com\docker\pinata\win\src\Docker.Engines\WSL2\LinuxWSL2Engine.cs:行号 180
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   在 Docker.ApiServices.StateMachines.TaskExtensions.<WrapAsyncInCancellationException>d__0.MoveNext() 位置 C:\workspaces\PR-16360\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\TaskExtensions.cs:行号 29
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   在 Docker.ApiServices.StateMachines.StartTransition.<DoRunAsync>d__5.MoveNext() 位置 C:\workspaces\PR-16360\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\StartTransition.cs:行号 67
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   在 Docker.ApiServices.StateMachines.StartTransition.<DoRunAsync>d__5.MoveNext() 位置 C:\workspaces\PR-16360\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\StartTransition.cs:行号 92

DEBUG 记录

  1. 卸载 Docker-Desktop,重新安装,无效;
  2. 重启 Docker-Desktop 无效;
  3. 删除 %USERPROFILE%/.wslconfig 无效;
  4. 以管理员身份运行,无效;
  5. 同时卸载 Docker-Desktop & WSL2
    • 再次安装 Docker-Desktop 启动后提示:
    • 安装完毕后重启,回归到之前的错误。
  6. 再次卸载、安装,这次不选择使用 WSL2,无效;
  7. 卸载,重新安装低版本 Docker-Desktop,https://docs.docker.com/desktop/windows/release-notes/#docker-desktop-352 无效

排查思路

  1. 可能和 .net framework 有关;
  2. 可能和 wsl2 有关,注意,之前使用的是 Hyper-V,现在变成了 wsl2 这可能是导致失败的一个原因;

最终解决方案

  • 查看参考链接 3.

    临时解决方案 cmd/shell下执行 netsh winsock reset

参考链接

  1. System.InvalidOperationException: Failed to deploy distro docker-desktop to C:\Users\lenova\AppData\Local\Docker\wsl\distro: exit code: -1
  2. 基于WSL2 的 Docker Desktop 启动时 Failed to set version to docker-desktop: exit code: -1的解决方法...
  3. Windows 10 Docker InvalidOperationException Failed to set version to docker-desktop: exit code: -1
    • 这个方案是有效的