docker遇到的最大的坑

问题描述

docker Desktop安装后,执行docker - v 成功展示版本号,但是切换为Linux内核就报错.

出现以下错误:

Unable to stop - 已停止该运行的命令,因为首选项变量“ErrorActionPreference”或通用参数设置为 Stop: 由于以下错误无法启动服务“Hyper-V 主机计算服务 (vmcompute)”: 无法启动计算机“.”上的服务 vmcompute。

   在 Docker.Core.Pipe.NamedPipeClient.<TrySendAsync>d__5.MoveNext()
--- 引发异常的上一位置中堆栈跟踪的末尾 ---
   在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   在 Docker.Core.Pipe.NamedPipeClient.Send(String action, Object[] parameters)
   在 Docker.Actions.DoStart(SynchronizationContext syncCtx, Boolean showWelcomeWindow, Boolean executeAfterStartCleanup)
   在 Docker.Actions.<>c__DisplayClass24_0.<Start>b__0()
   在 Docker.ApiServices.TaskQueuing.TaskQueue.<>c__DisplayClass17_0.<.ctor>b__1()

原因是, Windows10默认开启控制流防护(Control Flow Guard , CFG)

控制流防护(CFG)作为Win 8.1+的新安全保护机制,其实并不知名。 它被用于阻止针对可执行文件间接调用的恶意利用。CFG保护十分高效,同时它是一种编译器和操作系统相结合的防护手段。 “(CFG)编译检测代码会根据指针地址来进行间接跳转,这也就使得攻击者控制系统程序的过程变得更加的困难。”

①首先确保开启了Hyper-V,若没开启,步骤:控制面板-》程序-》启用或关闭windows功能-》开启Hyper-V-》重启

1, Open "Window Security" 打开“WIndows安全中心 ”

2, Open "App & Browser control" 打开“应用和浏览器控制”

3, Click "Exploit protection settings" at the bottom 点击"Exploit protection settings" (在最下面)

4, Switch to "Program settings" tab 切换到“程序设置”

5, Locate "C:WINDOWSSystem32vmcompute.exe" in the list and expand it 找到 "C:WINDOWSSystem32vmcompute.exe"并展开

6, Click "Edit" 点击“编辑”

7, Scroll down to "Code flow guard (CFG)" and uncheck "Override system settings" 找到"控制流保护(CFG)”并把“替代系统设置”前的勾去掉。

8, win+R 输入 services.msc 找到hyper-V 虚拟机管理服务和Hyper-V主机计算服务,手动打开或者把启动方式改为自动。

9,记得重启电脑,才能生效

最后docker is running..........................

原文地址:https://www.cnblogs.com/zhyphp/p/14663324.html