Docker a VMWare Workstation v jednom Windows машине

Úloha bola jednoduchá, nainštalovať Docker na môj pracovný notebook pomocou Windows, ktorý už mal zoo. Nainštaloval som Docker Desktop a vytvoril kontajnery, všetko bolo v poriadku, ale rýchlo som zistil, že VMWare Workstation prestal spúšťať virtuálne počítače 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 v jednom 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 spravovať Windows Ochranca poverení obrancuRiešením je vypnúť funkciu Defender Credential Guard (mne pomohla položka 4 v časti Zakázať). Windows Ochranca poverení (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 Zobrazí sa otázka, či naozaj chcete vypnúť funkciu Defender Credential Guard. Áno! Týmto sa VMWare Workstation vráti do normálnej prevádzky a my sa vrátime tam, kde sme boli 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 v jednom 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 konverziou absolútnych ciest z Windows Formát POSIX a s väzbou zväzku obsahujúcou symbolické odkazy. Ale to je iný príbeh.

Zdroj: hab.com

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