Úloha bola jednoduchá, nainštalovať Docker na môj pracovný notebook s Windows, na ktorom už bol chaos. Nainštaloval som Docker Desktop, vytvoril kontajnery, všetko v poriadku, ale rýchlo som zistil, že VMWare Workstation prestala spúšťať virtuálne stroje s chybou:
VMware Workstation a Device/Credential Guard nie sú kompatibilné. VMware Workstation sa môže spustiť po vypnutí Device/Credential Guard.
Práca sa zastavila, treba to rýchlo opraviť.

Metódou googlenia sa zistilo, že táto chyba vzniká kvôli nekompatibilite VMWare Workstation a Hyper-V na jednom stroji. Problém je známy a existuje oficiálne riešenie od VMWare ako to , s odkazom na znalostnú bázu Microsoftu . Riešenie spočíva vo vypnutí Defender Credential Guard (mne pomohol bod 4 v sekcii Disable 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 reštarte Windows sa spýta, či naozaj chcete vypnúť Defender Credential Guard. Áno! Týmto spôsobom sa VMWare Workstation vráti k normálnej prevádzke a ocitneme sa na rovnakom mieste, ako pred inštaláciou Dockera.
Riešenia, ako zmieriť Hyper-V a VMWare Workstation, som napokon nenašiel, dúfam, že v novších verziách sa dohodnú.
Iná cesta
Už dávno som sa zamiloval do VMWare Workstation na rôzne účely, pokúšal som sa prejsť na Hyper-V a VirtualBox, ale funkcionalita nespĺňala moje požiadavky, takže dodnes sedím na VMWare. Zistil som, že existuje riešenie, ako skombinovať VMWare, Docker a VSCode v jedinom pracovnom prostredí.
— umožňuje spustiť Docker Engine na virtuálnom hostiteľovi a pripojiť sa k nemu ako vzdialene, tak aj lokálne. A pre ňu existuje ovládač kompatibility s VMWare Workstation,
Inštrukciu na inštaláciu osobitne preberať nebudem, iba zoznam ingrediencií:
- ( v balení)
- Docker Desktop
Áno, Docker Desktop, bohužiaľ, tiež potrebujeme. Ak ste ho zmazali, nainštalujeme ho znova, ale tentoraz s odškrtnutou požiadavkou na zmenu v OS, aby sme opäť neporušili VMWare Workstation.
Hneď chcem poznamenať, že všetko perfektne funguje od bežného používateľa, inštalačné programy požiadajú o eskaláciu práv, keď to bude potrebné, ale všetky príkazy v príkazovom riadku a skripty sa vykonávajú od aktuálneho používateľa.
Nakoniec príkazom:
$ docker-machine create --driver=vmwareworkstation devZ Boot2Docker bude vytvorený virtuálny stroj dev, v ktorom bude Docker.
Tento virtuálny stroj môžete pripojiť v grafickom rozhraní VMWare Workstation otvorením príslušného súboru vmx. Ale nie je to povinné, pretože VSCode teraz potrebuje spúšťanie prostredníctvom PowerShell skriptu (nejako sa mi stalo, že docker-machine a docker-machine-driver-vmwareworkstation sa nachádzali práve v zložke bin):
cd ~/bin
./docker-machine env dev | Invoke-Expression
codeOtvorí sa VSCode na prácu s kódom na lokálnom počítači a Dockerom v virtuálnom stroji. Plugin umožňuje pohodlne spravovať kontajnery vo virtuálnom stroji bez nutnosti zapájať sa do konzoly.
Ťažkosti:
Počas vytvárania docker-machine mi proces zamrzol:
Waiting for SSH to be available... 
A po chvíli skončil s prekročením pokusov o nadviazanie spojenia s virtuálnym strojom.
Všetko je to vo politike certifikátov. Pri vytváraní virtuálneho stroja sa v adresári ~/.dockermachines/machines/dev objavia certifikačné súbory pre pripojenie cez SSH: id_rsa, id_rsa.pub. OpenSSH môže odmietnuť ich použitie, pretože si myslí, že majú problémy s prístupovými právami. Avšak docker-machine vám o tom nič nepovie, len sa bude neustále pokúšať o pripojenie, kým ho to neomrzí.
Riešenie: Ako náhle začne vytváranie nového virtuálneho stroja, prejdite do adresára ~/.dockermachines/machines/dev a zmeňte práva na uvedených súboroch po jednom.
Majiteľom súboru by mal byť aktuálny používateľ, úplný prístup iba pre aktuálneho používateľa a SYSTEM, všetci ostatní používatelia vrátane skupiny administrátorov a samotných administrátorov by mali byť odstránení.
Môžu byť aj problémy s prevodom absolútnych ciest z formátu Windows na Posix a s väzbou objemov obsahujúcich symbolické odkazy. Ale to je už iný príbeh.
Zdroj: habr.com
