Docker 和 VMWare Workstation 在同一台 Windows 機器上

任務很簡單,將 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.

工作已停止,急需維修

Docker 和 VMWare Workstation 在同一台 Windows 機器上

通過google,發現這個錯誤是由於同一台機器上的VMWare Workstation和Hyper-V不兼容導致的。 這個問題是已知的,有一個像這樣的官方 VMWare 解決方案 確定,帶有指向 Microsoft 知識庫的鏈接 管理 Windows Defender Credential Guard. 解決方案是禁用 Defender Credential Guard(禁用 Windows Defender Credential Guard 部分的第 4 項幫助了我):

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 Engine 並遠程和本地連接到它。 並且有一個 VMWare Workstation 兼容驅動程序, 鏈接到github

我不會特別複述安裝說明,只複述配料表:

  1. 碼頭工人工具箱 (Docker機器 包括)
  2. Docker 機器 VMware 工作站驅動程序
  3. 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。 插入 用於 Visual Studio Code 的 Docker 允許您在不進入控制台的情況下方便地管理虛擬機中的容器。

難點:

在創建docker-machine的過程中,進程掛了:

Waiting for SSH to be available...

Docker 和 VMWare Workstation 在同一台 Windows 機器上

一段時間後,它以過多的嘗試與虛擬機建立連接而告終。

這都是關於證書政策的。 創建虛擬機時,會有一個~.dockermachinemachinesdev目錄,在這個目錄下會有通過SSH連接的證書文件:id_rsa、id_rsa.pub。 OpenSSH 可能會拒絕使用它們,因為它認為它們存在​​權限問題。 只有 docker-machine 不會告訴您任何關於此的信息,而只會重新連接,直到它感到厭煩為止。

解決方案: 一旦開始創建新的虛擬機,我們就會轉到 ~.dockermachinesmachinesdev 目錄並更改對指定文件的權限,一次一個。

該文件必須為當前用戶所有,只有當前用戶和 SYSTEM 具有完全訪問權限,所有其他用戶,包括管理員組和管理員本身,都必須刪除。

將絕對路徑從 Windows 格式轉換為 Posix 格式以及包含符號鏈接的綁定卷也可能存在問題。 不過那是另一回事了。

來源: www.habr.com

添加評論