前言: 在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%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d “DebugTool” /application osloader bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path “\EFI\Microsoft\Boot\SecConfig.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