Docker a VMWare Workstation na jednom Windows počítači

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

Docker a VMWare Workstation na jednom Windows počítači

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 opraviť, s odkazom na znalostnú bázu Microsoftu Spravovať Windows Defender Credential Guard. 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: /d

Po 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í.

Docker Machine — 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, odkaz na GitHub

Inštrukciu na inštaláciu osobitne preberať nebudem, iba zoznam ingrediencií:

  1. Docker Toolbox (Docker Machine v balení)
  2. Docker Machine VMware Workstation Driver
  3. 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 dev

Z 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
code

Otvorí sa VSCode na prácu s kódom na lokálnom počítači a Dockerom v virtuálnom stroji. Plugin Docker for Visual Studio Code 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...

Docker a VMWare Workstation na jednom Windows počítači

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

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster