Docker i VMWare Workstation na jednom Windows računalu

Zadatak je bio jednostavan, instalirati Docker na svoj radni laptop s Windowsom, na kojem je već bila prava zbrka. Instalirao sam Docker Desktop, stvorio kontejnere, sve je u redu, ali ubrzo sam otkrio da VMWare Workstation više ne pokreće virtualne mašine i javlja grešku:

VMware Workstation i Device/Credential Guard nisu kompatibilni. VMware Workstation se može pokrenuti nakon onemogućavanja Device/Credential Guarda.

Rad je stao, treba hitno popraviti.

Docker i VMWare Workstation na jednom Windows računalu

Metodom pretraživanja na internetu otkriveno je da se ova greška javlja zbog nespojivosti VMWare Workstation i Hyper-V na jednom računalu. Problema je poznat i postoji službeno rješenje VMWare kako ga popraviti, uz poveznicu na Microsoftovu bazu znanja Upravljanje Windows Defender Credential Guard. Rješenje se sastoji od onemogućavanja Defender Credential Guarda (meni je pomogla točka 4 u odjeljku Onemogući 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

Nakon ponovnog pokretanja Windows će pitati želite li zaista isključiti Defender Credential Guard. Da! Tako će VMWare Workstation ponovno funkcionirati normalno, i naći ćemo se na istom mjestu kao i prije instalacije Dockera.

Rješenja za spajanje Hyper-V i VMWare Workstation nisam pronašao, nadam se da će se u novim verzijama uspjeti uklopiti.

Druga opcija

Već dugo koristim VMWare Workstation za razne svrhe, pokušao sam prijeći na Hyper-V i VirtualBox, ali funkcionalnosti nisu zadovoljile moje potrebe, tako da sam do danas ostao na tome. Ispostavilo se da postoji rješenje kako spojiti VMWare, Docker i VSCode u jednoj radnoj sredini.

Docker Machine — omogućava pokretanje Docker Engine-a na virtualnom hostu i povezivanje s njim kako lokalno, tako i udaljeno. Za njega postoji upravljački program kompatibilnosti s VMWare Workstation, poveznica na GitHub

Neću prepričavati upute za instalaciju, samo ću navesti popis sastojaka:

  1. Docker Toolbox (Docker Machine u kompletu)
  2. Docker Machine VMware Workstation Driver
  3. Docker Desktop

Da, nažalost, također će biti potreban Docker Desktop. Ako ste ga uklonili, instalirajte ga ponovno, ali ovaj put uklonite oznaku o promjenama u OS-u, kako ne biste opet pokvarili VMWare Workstation.

Odmah želim napomenuti da sve fantastično funkcionira s običnim korisnikom, instalacijski programi će tražiti eskalaciju prava kada bude potrebno, ali sve naredbe u komandnoj liniji i skripte izvršavaju se od trenutnog korisnika.

Na kraju, naredbom:

$ docker-machine create --driver=vmwareworkstation dev

Iz Boot2Docker će se stvoriti virtualna mašina dev unutar koje će biti Docker.

Ovu virtualku možete priključiti u grafičko sučelje VMWare Workstation otvaranjem odgovarajuće vmx datoteke. No to nije obavezno, jer će sada trebalo pokrenuti PowerShell skriptu za VSCode (iz nekog razloga docker-machine i docker-machine-driver-vmwareworkstation završili su u mapi bin):

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

Otvorit će se VSCode za rad s kodom na lokalnoj mašini i Dockerom u virtualnoj mašini. Plugin Docker for Visual Studio Code omogućava jednostavno upravljanje kontejnerima u virtualki bez ulaska u konzolu.

Teškoće:

Tijekom stvaranja docker-machine, proces mi je zastao:

Waiting for SSH to be available...

Docker i VMWare Workstation na jednom Windows računalu

I nakon nekog vremena završio je s prekoračenjem pokušaja uspostavljanja veze s virtualkom.

Sve je to zbog politike vezane uz certifikate. Pri stvaranju virtualne mašine, dobit ćete katalog ~.dockermachinemachinesdev u kojem će biti datoteke certifikata za povezivanje putem SSH: id_rsa, id_rsa.pub. OpenSSH može odbiti njihovu upotrebu, jer smatra da imaju problema s dozvolama. No docker-machine vam o tome neće reći ništa, već će se samo ponovo povezivati dok vas ne umori.

Rešenje: Kada započne stvaranje nove virtualne mašine, ulazimo u katalog ~.dockermachinemachinesdev i mijenjamo dozvole na spomenutim datotekama, jednu po jednu.

Vlasnik datoteke treba biti trenutni korisnik, potpuni pristup ima samo trenutni korisnik i SYSTEM, dok se svi ostali korisnici, uključujući administrativnu grupu i same administratore, trebaju ukloniti.

Mogu također biti problemi s pretvaranjem apsolutnih putanja iz Windows formata u Posix, i s povezivanjem volumena koji sadrže simboličke linkove. No to je već druga priča.

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster