任務很簡單,將 Docker 放在我工作的 Windows 筆記本電腦上,它已經有一個動物園。 我安裝了 Docker Desktop 並創建了容器,一切正常,但我很快發現 VMWare Workstation 停止運行虛擬機並報錯:
VMware Workstation and Device/Credential Guard are not compatible. VMware Workstation can be run after disabling Device/Credential Guard.
工作已停止,急需維修
通過google,發現這個錯誤是由於同一台機器上的VMWare Workstation和Hyper-V不兼容導致的。 這個問題是已知的,有一個像這樣的官方 VMWare 解決方案
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
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
mountvol X: /d
重新啟動後,Windows 會詢問您是否真的要禁用 Defender Credential Guard。 是的! 這樣VMWare Workstation就會恢復正常運行,我們會發現自己還是和安裝docker之前一樣。
我還沒有找到關於如何調和 Hyper-V 和 VMWare Workstation 的解決方案,我希望他們能在新版本中成為朋友。
另一種方式
出於各種原因,我長期以來一直沉迷於 VMWare Workstation,我試圖在 Hyper-V 和 VirtualBox 上下車,但功能不能滿足我的任務,所以我一直坐到今天。 事實證明,有一個解決方案可以讓 VMWare、Docker 和 VSCode 在一個工作環境中成為朋友。
我不會特別複述安裝說明,只複述配料表:
碼頭工人工具箱 (Docker機器 包括)Docker 機器 VMware 工作站驅動程序 - Docker桌面
是的,不幸的是,Docker Desktop 也將是必需的。 如果你拆除了它,然後重新安裝它,但這次刪除關於更改操作系統的複選框,以免再次破壞 VMWare Workstation。
我想立即指出,簡單用戶的一切正常,安裝程序會在需要時要求升級權限,但命令行和腳本上的所有命令都是從當前用戶執行的。
結果,團隊:
$ docker-machine create --driver=vmwareworkstation dev
從 Boot2Docker 中,將創建一個 dev virtualka,其中將是 Docker。
通過打開相應的 vmx 文件,可以將此虛擬機附加到 VMWare Workstation GUI。 但這不是必需的,因為 VSCode 現在需要運行 PowerShell 腳本(出於某種原因,我的 docker-machine 和 docker-machine-driver-vmwareworkstation 最終位於 bin 文件夾中):
cd ~/bin
./docker-machine env dev | Invoke-Expression
code
VSCode 將打開以使用本地機器上的代碼和虛擬機中的 docker。 插入
難點:
在創建docker-machine的過程中,進程掛了:
Waiting for SSH to be available...
一段時間後,它以過多的嘗試與虛擬機建立連接而告終。
這都是關於證書政策的。 創建虛擬機時,會有一個~.dockermachinemachinesdev目錄,在這個目錄下會有通過SSH連接的證書文件:id_rsa、id_rsa.pub。 OpenSSH 可能會拒絕使用它們,因為它認為它們存在權限問題。 只有 docker-machine 不會告訴您任何關於此的信息,而只會重新連接,直到它感到厭煩為止。
解決方案: 一旦開始創建新的虛擬機,我們就會轉到 ~.dockermachinesmachinesdev 目錄並更改對指定文件的權限,一次一個。
該文件必須為當前用戶所有,只有當前用戶和 SYSTEM 具有完全訪問權限,所有其他用戶,包括管理員組和管理員本身,都必須刪除。
將絕對路徑從 Windows 格式轉換為 Posix 格式以及包含符號鏈接的綁定卷也可能存在問題。 不過那是另一回事了。
來源: www.habr.com