前言: 在win10中安装docker后,需要开启Hype-V,但是当运行VMware Workstation虚拟机时发现其与Device/Credential Guard 不兼容的错误。推荐使用解决方案一
原因:
Windows 10默认不会打开Hyper-V,但是安装Docker需要打开Hyper-V, Hyper-V是微软提出的一种系统管理程序虚拟化技术,能够实现桌面虚拟化 。而Windows 10开启Hyper-V后与VMware Workstation冲突从而无法新建虚拟机,因为它们都需要使用CPU,开启其中一个就会造成CPU被占用,另一个就不能使用。
解决方案一:
关闭Hyper-V,重启电脑
打开cmd命令窗口(管理员)输入关闭Hyper-V的命令用来禁用虚拟机监控程序,然后重启电脑就完美解决不兼容的问题,具体命令如下:
bcdedit /set hypervisorlaunchtype off
开启Hyper-V,重启电脑
如果需要开启Hyper-V,在cmd命令窗户 (管理员) 输入开启Hyper-V的命令用来开启虚拟机监控程序,然后重启电脑就可以使用Windows 10 中的docker了,具体命令如下:
bcdedit /set hypervisorlaunchtype auto
解决方案二:
通过增加Windows 10启动项,来解决这个问题。一个开启Hyper-V,一个关闭Hyper-V,在系统启动页面选择对应的启动项就可以了。就比如一台电脑安装多个操作系统,开机时需要选择要进的操作系统,情况类似。
新建启动项
-
打开cmd命令窗口(管理员),输入下面命令,新建启动项
bcdedit /copy {default} /d "Windows 10 With Hyper-V"
-
然后将执行得到的那一串序列号填入下面的指令进行执行,执行之后会提示“操作成功完成”。
bcdedit /set {5e895997-dfa5-11ea-acdf-86de2325951c} hypervisorlaunchtype off
-
输入下面命令,可以查看启动项列表,如要删除,参考下方 第6小节 bcdedit 常用命令指引
bcdedit /enum
-
cmd命令窗口(管理员),输入下面命令,关闭guard
mountvol X: /s copy %WINDIR%System32SecConfig.efi X:EFIMicrosoftBootSecConfig.efi /Y bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d “DebugTool” /application osloader bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path “EFIMicrosoftBootSecConfig.efi” bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215} bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X: mountvol X: /d
-
重启计算机,按照系统引导时的提示选择对应的系统。
-
Bcdedit 常用命令指引
# 显示Bcdedit全部命令帮助 bcdedit /? # 指定显示store命令帮助,命令前面的斜杠可要可不要 bcdedit /? /store # 查看启动项列表 bcdedit /enum # 查看所有 bcdedit /enum all # 设置某个启动项描述 bcdedit /set {GUID} description "Windows 10 With Hyper-V" # 设置启动项显示排列顺序 bcdedit /displayorder {current} {GUID1} {GUID2} # 将指定OS项添加到启动管理显示顺序末尾 bcdedit /displayorder {GUID} /addlast # 创建新的启动项目 bcdedit /create /d "New entry" # 复制启动项目 bcdedit /copy {GUID} /d "New entry" # 删除启动项 bcdedit /delete {GUID} # 彻底删除指定的启动项 bcdedit /delete {GUID} /cleanup # 设置GUID序列为默认启动项 bcdedit /default {GUID} # 设置默认的启动菜单显示超时时间,单位秒 bcdedit /timeout 15