Docker a VMWare Workstation na stejném počítači s Windows

Úkol byl jednoduchý, dát Docker na můj pracovní notebook s Windows, který už má zoo. Nainstaloval jsem Docker Desktop a vytvořil kontejnery, vše je v pořádku, ale rychle jsem zjistil, že VMWare Workstation přestal spouštět virtuální stroje s chybou:

VMware Workstation and Device/Credential Guard are not compatible. VMware Workstation can be run after disabling Device/Credential Guard.

Práce se zastavily, je naléhavá oprava

Docker a VMWare Workstation na stejném počítači s Windows

Vygooglováním bylo zjištěno, že k této chybě dochází z důvodu nekompatibility VMWare Workstation a Hyper-V na stejném stroji. Problém je známý a existuje oficiální řešení VMWare, jako je toto opravit, s odkazem na Microsoft Knowledge Base Spravujte Windows Defender Credential Guard. Řešením je deaktivace ochrany Defender Credential Guard (pomohla mi položka 4 v sekci Deaktivace ochrany Windows Defender Credential 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
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
mountvol X: /d

Po restartu se systém Windows zeptá, zda opravdu chcete deaktivovat ochranu Defender Credential Guard. Ano! VMWare Workstation se tak vrátí do běžného provozu a my se ocitneme na stejném místě jako před instalací dockeru.

Nenašel jsem řešení, jak sladit Hyper-V a VMWare Workstation, doufám, že se v nových verzích stanou přáteli.

Jiná cesta

Dlouho jsem byl závislý na VMWare Workstation pro různé účely, zkoušel jsem vystoupit na Hyper-V a VirtualBox, ale funkcionalita nesplňovala mé úkoly, a tak sedím dodnes. Ukázalo se, že existuje řešení, jak spřátelit VMWare, Docker a VSCode v jednom pracovním prostředí.

dokovací stroj - umožňuje spustit Docker Engine na virtuálním hostiteli a připojit se k němu vzdáleně i lokálně. A existuje pro něj ovladač kompatibility VMWare Workstation, odkaz na github

Nebudu převyprávět zejména návod k instalaci, pouze seznam ingrediencí:

  1. Docker Toolbox (dokovací stroj zahrnuta)
  2. Ovladač pracovní stanice Docker Machine VMware
  3. DockerDesktop

Ano, Docker Desktop bude bohužel také potřeba. Pokud jste ji zbourali, nainstalujte ji znovu, ale tentokrát zrušte zaškrtnutí políčka o provádění změn v operačním systému, abyste znovu nepoškodili VMWare Workstation.

Okamžitě chci poznamenat, že vše funguje dobře od jednoduchého uživatele, instalační programy požádají o eskalaci práv, když to potřebují, ale všechny příkazy na příkazovém řádku a skripty jsou prováděny od aktuálního uživatele.

V důsledku toho tým:

$ docker-machine create --driver=vmwareworkstation dev

z Boot2Docker se uvnitř vytvoří dev virtualka, kterou bude Docker.

Tento virtuální stroj lze připojit ke grafickému uživatelskému rozhraní VMWare Workstation otevřením odpovídajícího souboru vmx. Ale to není nutné, protože VSCode bude nyní muset spustit skript PowerShell (z nějakého důvodu můj docker-machine a docker-machine-driver-vmwareworkstation skončil ve složce bin):

cd ~/bin
./docker-machine env dev | Invoke-Expression
code

VSCode se otevře pro práci s kódem na místním počítači a dockeru ve virtuálním počítači. zapojit Docker pro kód Visual Studio umožňuje pohodlně spravovat kontejnery ve virtuálním stroji, aniž byste se museli dostat do konzole.

Potíže:

V procesu vytváření docker-machine mi proces visel:

Waiting for SSH to be available...

Docker a VMWare Workstation na stejném počítači s Windows

A po chvíli to skončilo přemírou pokusů o navázání spojení s virtuálním strojem.

Vše je o certifikační politice. Při vytváření virtuálního stroje budete mít adresář ~.dockermachinemachinesdev v tomto adresáři budou soubory certifikátů pro připojení přes SSH: id_rsa, id_rsa.pub. OpenSSH je může odmítnout použít, protože si myslí, že mají problémy s oprávněním. Pouze docker-machine vám o tom nic neřekne, ale jednoduše se znovu připojí, dokud se nezačne nudit.

řešení: Jakmile začne vytváření nového virtuálního stroje, přejdeme do adresáře ~ .dockermachinemachinesdev a změníme práva k zadaným souborům, jeden po druhém.

Soubor musí vlastnit aktuální uživatel, plný přístup má pouze aktuální uživatel a SYSTÉM, všichni ostatní uživatelé včetně skupiny administrators a samotných správců musí být smazáni.

Mohou se také vyskytnout problémy s převodem absolutních cest z Windows do formátu Posix a s vazbou svazků obsahujících symbolické odkazy. Ale to je jiný příběh.

Zdroj: www.habr.com

Přidat komentář