Docker
一、Docker简介
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
二、Docker的下载
进入官网,点击Download Docker Deskto下载即可 官网

三、环境的搭建
1.开启虚拟化
打开控制面板 - 程序和功能 - 启用或关闭Windows功能,勾选Hyper-V,然后点击确定即可,点击确定后,启用完毕会提示重启系统,我们可以稍后再重启。


2.安装WSL2
在未安装WSL2时,直接运行docker则有可能出现以下情况

这是因为Docker无法在Windows系统中直接运行,而需要创建一个Windows系统中的Linux虚拟机(VM)为Docker的正常运行搭建好底层依赖。虽然官方文档提供了hyper-V和WSL2两种解决方案,但是WSL2是基于hpyer-V在WSL1的升级版,其功能,安装方式也简单方便,因此作者就选择了WSL2的后端方式来运行Docker。
可以访问标示官方链接来安装WSL2
稍后重启运行即可
四、极少数报错情况
经过如上步骤,大部分读者便可成功运行,但仍有一小部分报错,请诸位稍安勿躁。
如果这时候报错 System.InvalidOperationException: Failed to set version to docker-desktop: exit code: -1
错误如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| 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
输入:
即可解决这种问题
注意此命令要慎用,这是把原来的docker系统给删掉,相当于是重置docker-desktop,我里面的镜像和容器都没了。再启动docker-desktop会重新生成里的docker-desktop和docker-desktop-data
