Docker și VMWare Workstation pe același computer Windows

Sarcina a fost simplă, puneți Docker pe laptopul meu Windows funcțional, care are deja o grădină zoologică. Am instalat Docker Desktop și am creat containere, totul este ok, dar am descoperit rapid că VMWare Workstation a încetat să mai ruleze mașinile virtuale cu o eroare:

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

Lucrarea s-a oprit, este urgent de reparat

Docker și VMWare Workstation pe același computer Windows

Gândind pe google, s-a aflat că această eroare apare din cauza incompatibilității VMWare Workstation și Hyper-V pe aceeași mașină. Problema este cunoscută și există o soluție oficială VMWare ca aceasta repara, cu un link către baza de cunoștințe Microsoft Gestionați Windows Defender Credential Guard. Soluția este să dezactivez Defender Credential Guard (articolul 4 din secțiunea Dezactivare Windows Defender Credential Guard m-a ajutat):

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

După repornire, Windows vă va întreba dacă doriți cu adevărat să dezactivați Defender Credential Guard. Da! În acest fel, VMWare Workstation va reveni la funcționarea normală și ne vom găsi în același loc ca înainte de a instala docker.

Nu am găsit o soluție despre cum să reconciliez Hyper-V și VMWare Workstation, sper că vor deveni prieteni în versiuni noi.

Altă cale

Sunt multă vreme dependent de VMWare Workstation în diverse scopuri, am încercat să cobor pe Hyper-V și VirtualBox, dar funcționalitatea nu mi-a satisfăcut sarcinile, așa că stau până astăzi. S-a dovedit că există o soluție pentru a face prieteni VMWare, Docker și VSCode într-un singur mediu de lucru.

mașină docker - vă permite să rulați Docker Engine pe o gazdă virtuală și să vă conectați la acesta atât de la distanță, cât și local. Și există un driver de compatibilitate pentru stația de lucru VMWare, link către github

Nu voi repeta în mod specific instrucțiunile de instalare, ci doar lista de ingrediente:

  1. Docker Toolbox (mașină docker inclus)
  2. Docker Machine VMware Workstation Driver
  3. DockerDesktop

Da, Docker Desktop, din păcate, va fi și el necesar. Dacă l-ați demolat, instalați-l din nou, dar de data aceasta eliminând caseta de selectare pentru a face modificări la sistemul de operare, pentru a nu sparge din nou VMWare Workstation.

Vreau să observ imediat că totul funcționează bine de la un simplu utilizator, programele de instalare vor cere escaladarea drepturilor atunci când au nevoie, dar toate comenzile de pe linia de comandă și scripturile sunt executate de la utilizatorul curent.

Ca urmare, echipa:

$ docker-machine create --driver=vmwareworkstation dev

din Boot2Docker, va fi creat un dev virtualka în interiorul căruia va fi Docker.

Această mașină virtuală poate fi atașată la GUI VMWare Workstation prin deschiderea fișierului vmx corespunzător. Dar acest lucru nu este necesar, deoarece VSCode va trebui acum să ruleze un script PowerShell (din anumite motive, docker-machine și docker-machine-driver-vmwareworkstation au ajuns în folderul bin):

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

VSCode se va deschide pentru a lucra cu cod pe mașina locală și docker în mașina virtuală. conecteaza Docker pentru Visual Studio Code vă permite să gestionați comod containerele într-o mașină virtuală fără a intra în consolă.

Dificultăți:

În procesul de creare a docker-machine, procesul mi-a blocat:

Waiting for SSH to be available...

Docker și VMWare Workstation pe același computer Windows

Și după un timp s-a încheiat cu un exces de încercări de a stabili o conexiune cu mașina virtuală.

Totul tine de politica certificatelor. Când creați o mașină virtuală, veți avea un director ~.dockermachinemachinesdev în acest director vor exista fișiere de certificat pentru conectarea prin SSH: id_rsa, id_rsa.pub. OpenSSH poate refuza să le folosească deoarece consideră că au probleme de permisiuni. Doar docker-machine nu vă va spune nimic despre asta, ci pur și simplu se va reconecta până se plictisește.

soluţie: De îndată ce începe crearea unei noi mașini virtuale, mergem în directorul ~ .dockermachinemachinesdev și schimbăm drepturile la fișierele specificate, pe rând.

Fișierul trebuie să fie deținut de utilizatorul actual, doar utilizatorul actual și SISTEMUL au acces complet, toți ceilalți utilizatori, inclusiv grupul de administratori și administratorii înșiși, trebuie șterși.

De asemenea, pot apărea probleme la conversia căilor absolute din formatul Windows în format Posix și legarea volumelor care conțin legături simbolice. Dar asta este o altă poveste.

Sursa: www.habr.com

Adauga un comentariu