Docker a VMWare Workstation na rovnakom počítači so systémom Windows

Úloha bola jednoduchá, nainštalovať Docker na môj pracovný notebook s Windows, ktorý už má zoologickú záhradu. Nainštaloval som Docker Desktop, vytvoril kontajnery, všetko bolo v poriadku, ale rýchlo som zistil, že VMWare Workstation prestal spúšťať virtuálne stroje s chybou:

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

Práce sa zastavili, treba to urgentne opraviť

Docker a VMWare Workstation na rovnakom počítači so systémom Windows

Googlom sa zistilo, že k tejto chybe dochádza v dôsledku nekompatibility VMWare Workstation a Hyper-V na rovnakom počítači. Problém je známy a existuje oficiálne riešenie VMWare, ako je toto opraviťs odkazom na znalostnú bázu spoločnosti Microsoft Spravujte službu Windows Defender Credential Guard. Riešením je deaktivácia Defender Credential Guard (pomohol mi bod 4 sekcie Deaktivácia 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 reštartovaní sa vás systém Windows opýta, či chcete vypnúť ochranu Defender Credential Guard. Áno! Týmto spôsobom sa VMWare Workstation vráti do normálnej prevádzky a budeme na rovnakom mieste ako pred inštaláciou dockeru.

Stále som nenašiel riešenie na zosúladenie Hyper-V a VMWare Workstation, dúfam, že sa stanú priateľmi v nových verziách.

Inač

Na VMWare Workstation som bol pripútaný už dlho na rôzne účely, skúsil som prejsť na Hyper-V a VirtualBox, ale funkcionalita nespĺňala moje potreby a zostal som tam dodnes. Ukázalo sa, že existuje riešenie, ako skombinovať VMWare, Docker a VSCode v jednom pracovnom prostredí.

Docker Machine — umožňuje spustiť Docker Engine na virtuálnom hostiteľovi a pripojiť sa k nemu vzdialene aj lokálne. A je tu ovládač kompatibility VMWare Workstation, odkaz na github

Nebudem prepisovať pokyny na inštaláciu, iba zoznam zložiek:

  1. Docker Toolbox (Docker Machine zahrnuté)
  2. Ovládač pracovnej stanice Docker Machine VMware
  3. DockerDesktop

Áno, Docker Desktop, bohužiaľ, bude tiež potrebný. Ak ste ho zbúrali, nainštalujte ho znova, ale tentoraz odstráňte začiarkavacie políčko o vykonaní zmien v operačnom systéme, aby ste znova nepoškodili VMWare Workstation.

Hneď by som chcel poznamenať, že od jednoduchého používateľa všetko funguje dobre, inštalačné programy požiadajú o eskaláciu práv, keď to potrebujú, ale všetky príkazy na príkazovom riadku a skripty sa vykonávajú od aktuálneho používateľa.

V dôsledku toho príkaz:

$ docker-machine create --driver=vmwareworkstation dev

z Boot2Docker sa vytvorí dev virtuálny stroj, do ktorého sa nainštaluje Docker.

Tento virtuálny stroj možno pripojiť ku grafickému rozhraniu VMWare Workstation otvorením príslušného súboru vmx. Nie je to však potrebné, pretože VSCode bude teraz musieť spustiť PowerShell ako skript (z nejakého dôvodu skončili docker-machine a docker-machine-driver-vmwareworkstation v priečinku bin):

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

VSCode sa otvorí na prácu s kódom na lokálnom počítači a Docker na virtuálnom počítači. Zapojiť Docker pre kód Visual Studio umožňuje pohodlne spravovať kontajnery vo virtuálnom stroji bez toho, aby ste museli ísť do konzoly.

Ťažkosti:

Počas vytvárania docker-machine môj proces zamrzol:

Waiting for SSH to be available...

Docker a VMWare Workstation na rovnakom počítači so systémom Windows

A po nejakom čase to skončilo ďalšími pokusmi o nadviazanie spojenia s virtuálnym strojom.

Všetko je to o certifikačnej politike. Pri vytváraní virtuálneho stroja budete mať k dispozícii adresár ~.dockermachinemachinesdev.V tomto adresári budú súbory certifikátov na pripojenie cez SSH: id_rsa, id_rsa.pub. OpenSSH ich môže odmietnuť použiť, pretože si myslí, že majú problémy s povoleniami. Iba docker-machine vám o tom nič nepovie, jednoducho sa znova pripojí, kým to nebude nudné.

riešenie: Hneď ako sa začne vytváranie nového virtuálneho počítača, prejdite do adresára ~.dockermachinemachinesdev a zmeňte práva na zadané súbory, jeden po druhom.

Vlastníkom súboru musí byť aktuálny používateľ, úplný prístup má iba aktuálny používateľ a SYSTÉM, všetci ostatní používatelia vrátane skupiny správcov a samotných správcov musia byť vymazaní.

Môžu sa vyskytnúť aj problémy s prevodom absolútnych ciest z formátu Windows do Posix a s väzbami zväzkov obsahujúcich symbolický odkaz. Ale to je už iný príbeh.

Zdroj: hab.com

Pridať komentár