Ú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.

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 , s odkazem na znalostní bázi Microsoftu . Ř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: /dPo 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í.
— 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,
Pokyny k instalaci nebudu podrobně přepisovat, pouze seznam ingrediencí:
- ( v balení)
- 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 devZ 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
codeOtevře se VSCode pro práci s kódem na místním počítači a Dockerem ve virtuální mašině. Plugin 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... 
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
