Docker a VMWare Workstation na jednom Windows stroji

Úkolem bylo jednoduché, nainstalovat Docker na svůj pracovní notebook s Windows, na kterém už byl pěkný chaos. Nainstaloval jsem Docker Desktop, vytvořil kontejnery, všechno v pořádku, ale brzy jsem zjistil, že VMWare Workstation přestala spouštět virtuální stroje s chybou:

VMware Workstation a Device/Credential Guard jsou nekompatibilní. VMware Workstation může být spuštěna po deaktivaci Device/Credential Guard.

Práce se zastavila, je nutné to urgentně opravit.

Docker a VMWare Workstation na jednom Windows stroji

Pomocí vyhledávání na Googlu jsem zjistil, že tato chyba vzniká z nekompatibility VMWare Workstation a Hyper-V na jednom počítači. Problém je známý a existuje oficiální řešení od VMware, jak to opravit, s odkazem na znalostní bázi Microsoftu Spravovat Windows Defender Credential Guard. Řešení spočívá v deaktivaci Defender Credential Guard (mě pomohl bod 4 v části Deaktivace 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 restartování Windows se zeptá, zda skutečně chcete deaktivovat Defender Credential Guard. Ano! Tím se VMWare Workstation vrátí do normálního chodu, a my se dostaneme na stejné místo, jako jsme byli před instalací Dockera.

Řešení, jak smířit Hyper-V a VMWare Workstation, jsem nakonec nenašel. Doufám, že v nových verzích se spolu domluví.

Jiná cesta

Už dlouho používám VMWare Workstation pro různé účely, pokusil jsem se přeorientovat na Hyper-V a VirtualBox, ale funkce mi nevyhovovaly, takže stále zůstávám s VMWare. Ukázalo se, že existuje řešení, jak spojit VMWare, Docker a VSCode v jednom pracovním prostředí.

Docker Machine — umožňuje spouštět Docker Engine na virtuálním hostiteli a připojit se k němu jak vzdáleně, tak lokálně. A má ovladač kompatibility s VMWare Workstation, odkaz na GitHub

Pokyny k instalaci nebudu podrobně přepisovat, pouze seznam ingrediencí:

  1. Docker Toolbox (Docker Machine v balení)
  2. Ovladač Docker Machine pro VMware Workstation
  3. Docker Desktop

Ano, Docker Desktop, bohužel, také bude potřeba. Pokud jste ho odebrali, nainstalujte ho znovu, ale tentokrát odškrtněte checkbox pro změny v systému, abyste znovu neporušili VMWare Workstation.

Hned musím podotknout, že vše funguje skvěle jako běžný uživatel, instalační programy požádají o eskalaci práv, když to bude potřeba, ale všechny příkazy v příkazovém řádku a skripty se vykonávají z aktuálního uživatele.

Nakonec příkazem:

$ docker-machine create --driver=vmwareworkstation dev

Z Boot2Docker bude vytvořena virtuální mašina dev, uvnitř které bude Docker.

Tuto virtuální mašinu lze připojit k grafickému rozhraní VMWare Workstation otevřením příslušného souboru vmx. Není to však nutné, protože nyní bude potřeba spustit PowerShell skript pro VSCode (nějakým způsobem mám docker-machine a docker-machine-driver-vmwareworkstation v adresáři bin):

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

Otevře se VSCode pro práci s kódem na místním počítači a Dockerem ve virtuální mašině. Plugin Docker for Visual Studio Code umožňuje pohodlně spravovat kontejnery ve virtuální mašině, aniž byste museli jít do konzole.

Problémy:

Při vytváření docker-machine mi proces zamrzl:

Waiting for SSH to be available...

Docker a VMWare Workstation na jednom Windows stroji

A po chvíli skončil s překročením pokusů o navázání spojení s virtuální mašinou.

Vše je způsobeno politikou certifikátů. Při vytváření virtuální mašiny se vám vytvoří adresář ~/.dockermachinemachinesdev, ve kterém budou soubory certifikátů pro připojení přes SSH: id_rsa, id_rsa.pub. OpenSSH může odmítat jejich použití, protože má za to, že mají problémy s oprávněními. Jenomže docker-machine vám o tom nic neřekne a prostě se bude neustále připojovat, dokud ho to neomrzí.

Řešení: Jakmile začne vytváření nové virtuální mašiny, přejdeme do adresáře ~/.dockermachinemachinesdev a změníme oprávnění na uvedené soubory, jeden po druhém.

Vlastníkem souboru by měl být aktuální uživatel, plný přístup by měl mít pouze aktuální uživatel a SYSTEM, všechny ostatní uživatele, včetně skupiny administrátorů a samotných administrátorů je třeba odstranit.

Mohou také nastat problémy s převodem absolutních cest z Windows formátu do Posix a s připojováním objemů obsahujících symbolické odkazy. Ale to už je jiný příběh.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster