持续创作,加速生长!这是我参与「日新方案 6 月更文挑战」的第18天,点击查看活动概况

问题描绘:

本文解决俩个Docker报错:分别是: 1.WSL 2 installation is incomplete. 2.System.InvalidOperationException: Failed to set version to docker-desktop: exit code: -1

WSL 2 installation is incomplete.【BUG解决】【Docker之云原生基石】

今天在装置Docker成功之后,运转Docker,呈现了以下过错:

WSL 2 installation is incomplete. The WSL 2 Linux kernel is now installed using a separate MSI update package.Please click the link and follow the instructions to install the kernel update:aka.ms/wsl2kernel. Press Restart after installing the Linux kernel.

WSL 2 installation is incomplete.【BUG解决】【Docker之云原生基石】

原因剖析:

Docker 是一个运用打包、分发、布置的工具。
根本便是一个轻量的虚拟机。虚拟机里只有咱们需求的东西,其他剩余的东西是必要的。 重要概念:镜像容器
镜像:和软件装置包类似,能够快速的传达和装置。
容器:软件装置后的状态,每个软件运转环境都是独立的、隔离的,称之为容器。

当咱们装置docker desktop时,他会问咱们是否需求运用wsl2(基于Windows的Linux子体系)。假如没有,咱们将运用Hyper-V虚拟机运转。但是,与虚拟机比较,该子体系具有更好的功能。 优点:保证了不同机器上跑都是一致的运转环境,不会呈现我机器上跑正常,你机器跑就有问题的情况。

The WAL 2 Linux kernel is now installed using a separate MSI update package.

问题就在这儿!

解决方案:

咱们先去体系里查看一下有没有启用Windows的Linux子体系,过程如下: 控制面板->程序->程序和功能

WSL 2 installation is incomplete.【BUG解决】【Docker之云原生基石】

检测一下有没有勾选这儿:启用Windows的Linux子体系

WSL 2 installation is incomplete.【BUG解决】【Docker之云原生基石】

假如没有的话,咱们勾选上,从头启动电脑,打开Docker。 假如还是报WSL 2 installation is incomplete.问题的话。原因就剩一个了便是: 咱们运用的wsl2版别很旧,因此需求手动更新。咱们能够根据提示从微软官网下载最新版别的wsl2,然后正常打开。 下面这个链接,拜访下载,装置更新:

wslstorestorage.blob.core.windows.net/wslblob/wsl…

下载慢的话运用谷歌游览器下载哈,亲测好用! 装置最新版别的wsl2:

WSL 2 installation is incomplete.【BUG解决】【Docker之云原生基石】
从头启动。运转。

到这儿大部分能够成功运转了。假如还没有,还有终极大招: 假如这时候报错 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-desktop和docker-desktop-data

WSL 2 installation is incomplete.【BUG解决】【Docker之云原生基石】