win10安装docker Desktop,切换到Linux container报错的解决方法

解决方法来自跳转页面

问题描述

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.<>c__DisplayClass36_0.<SwitchDaemon>b__0()
   在 Docker.ApiServices.TaskQueuing.TaskQueue.<>c__DisplayClass17_0.<.ctor>b__1()

并且hyper-v管理器(win10环境安装docker,可以直接开启这个Windows功能),里面只有管理器的根节点.
在这里插入图片描述

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

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

解决方法:

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:\WINDOWS\System32\vmcompute.exe" in the list and expand it
   找到 "C:\WINDOWS\System32\vmcompute.exe"并展开
 
6, Click "Edit"
点击“编辑”

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

8, Start vmcompute from powershell "net start vmcompute
打开命令行窗口运行net start vmcompute启动Hyper-V主机计算服务(也可以在计算机管理里启动这个服务和虚拟机管理服务)
9,记得重启电脑,才能生效

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值