WSL 2 installation is incomplete的解决方案

问题描述

解决方案

在Windows功能中开启Hyper-v


如果没有Hyper-v选项,新建文本粘贴以下内容后以.cmd为后缀保存后执行即可

pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

还需要确保开启适用于LinuxWindows子系统

之后重启电脑Docker即可正常运行!

以上操作都完成还是报WSL 2 installation is incomplete

如果还是报WSL 2 installation is incomplete.问题的话。原因就剩一个了就是:

我们使用的wsl2版本很旧,因此需要手动更新。我们可以根据提示从微软官网下载最新版本的wsl2,然后正常打开。

下面这个链接,访问下载,安装更新:

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

安装最新版本的wsl2:

重新启动。运行。


到这里大部分可以成功运行了。如果还没有,还有终极大招:
如果这时候报错 System.InvalidOperationException: Failed to set version to docker-desktop: exit code: -1
错误如下:

System.InvalidOperationException:
Failed to set version to docker-desktop: exit code: -1
 stdout: �S��v�[a�{
    
    |�W
N/ec\Ջ�v�d\O0
stderr: 
   在 Docker.ApiServices.WSL2.WslShortLivedCommandResult.LogAndThrowIfUnexpectedExitCode(String prefix, ILogger log, Int32 expectedExitCode) 位置 C:\workspaces\PR-15387\src\github.com\docker\pinata\win\src\Docker.ApiServices\WSL2\WslCommand.cs:行号 146
   在 Docker.Engines.WSL2.WSL2Provisioning.<ProvisionAsync>d__8.MoveNext() 位置 C:\workspaces\PR-15387\src\github.com\docker\pinata\win\src\Docker.Desktop\Engines\WSL2\WSL2Provisioning.cs:行号 82
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   在 Docker.Engines.WSL2.LinuxWSL2Engine.<DoStartAsync>d__26.MoveNext() 位置 C:\workspaces\PR-15387\src\github.com\docker\pinata\win\src\Docker.Desktop\Engines\WSL2\LinuxWSL2Engine.cs:行号 104
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   在 Docker.ApiServices.StateMachines.TaskExtensions.<WrapAsyncInCancellationException>d__0.MoveNext() 位置 C:\workspaces\PR-15387\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-15387\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-15387\src\github.com\docker\pinata\win\src\Docker.ApiServices\StateMachines\StartTransition.cs:行号 92

我们用管理员身份大开cmd输入:

netsh winsock reset

注意:这命令要慎用,这是把原来的docker系统给删掉,相当于是重置docker-desktop,我里面的镜像和容器都没了。再启动docker-desktop会重新生成里的docker-desktopdocker-desktop-data

猜你喜欢

转载自blog.csdn.net/qq_31762741/article/details/132135823