Docker dhe VMWare Workstation në të njëjtën makinë Windows

Detyra ishte e thjeshtë, instaloni Docker në laptopin tim të punës me Windows, i cili tashmë ka një kopsht zoologjik. Instalova Docker Desktop, krijova kontejnerë, gjithçka ishte në rregull, por shpejt zbulova se VMWare Workstation ndaloi lëshimin e makinave virtuale me gabimin:

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

Puna është ndalur, duhet rregulluar urgjentisht

Docker dhe VMWare Workstation në të njëjtën makinë Windows

Duke kërkuar në google, u zbulua se ky gabim ndodh për shkak të papajtueshmërisë së VMWare Workstation dhe Hyper-V në të njëjtën makinë. Problemi dihet dhe ekziston një zgjidhje zyrtare e VMWare si kjo rregulloj, me një lidhje me bazën e njohurive të Microsoft Menaxho Windows Defender Credential Guard. Zgjidhja është të çaktivizoni Defender Credential Guard (pika 4 e seksionit Disable Windows Defender Credential Guard më ndihmoi):

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

Pasi të rindizni, Windows do t'ju pyesë nëse duhet të çaktivizoni Defender Credential Guard. Po! Në këtë mënyrë VMWare Workstation do të kthehet në funksionimin normal dhe ne do të jemi në të njëjtin vend si përpara instalimit të docker.

Ende nuk kam gjetur një zgjidhje për të pajtuar Hyper-V dhe VMWare Workstation, shpresoj që ata të bëhen miq në versionet e reja.

Menyre tjeter

Unë kam qenë i lidhur me VMWare Workstation për një kohë të gjatë për qëllime të ndryshme, u përpoqa të kaloja në Hyper-V dhe VirtualBox, por funksionaliteti nuk i plotësoi nevojat e mia, dhe unë jam ende i mbërthyer atje deri më sot. Doli se ekziston një zgjidhje se si të kombinohen VMWare, Docker dhe VSCode në një mjedis pune.

Docker Machine — ju lejon të ekzekutoni Docker Engine në një host virtual dhe të lidheni me të si në distancë ashtu edhe në nivel lokal. Dhe ekziston një drejtues i pajtueshmërisë së VMWare Workstation për të, lidhje me github

Unë nuk do të ritregoj veçanërisht udhëzimet e instalimit, vetëm listën e përbërësve:

  1. Docker Toolbox (Docker Machine përfshirë)
  2. Shoferi i stacionit të punës Docker Machine VMware
  3. Punë desktop

Po, Docker Desktop, për fat të keq, do të jetë gjithashtu i nevojshëm. Nëse e keni prishur, atëherë instaloni përsëri, por këtë herë duke hequr kutinë e zgjedhjes për të bërë ndryshime në OS, në mënyrë që të mos prishni përsëri VMWare Workstation.

Do të doja të vëreja menjëherë se gjithçka funksionon mirë nga një përdorues i thjeshtë, programet e instalimit do të kërkojnë përshkallëzimin e të drejtave kur u nevojiten, por të gjitha komandat në vijën e komandës dhe skriptet ekzekutohen nga përdoruesi aktual.

Si rezultat, komanda:

$ docker-machine create --driver=vmwareworkstation dev

do të krijohet një makinë virtuale dev nga Boot2Docker, brenda së cilës do të instalohet Docker.

Kjo makinë virtuale mund t'i bashkëngjitet ndërfaqes grafike VMWare Workstation duke hapur skedarin përkatës vmx. Por kjo nuk është e nevojshme, sepse VSCode tani do të duhet të lëshohet nga PowerShell si një skript (për disa arsye, docker-machine dhe docker-machine-driver-vmwareworkstation përfunduan në dosjen e koshit):

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

VSCode do të hapet për të punuar me kodin në makinën lokale dhe Docker në makinën virtuale. Plugin Docker për Kodin Visual Studio ju lejon të menaxhoni me lehtësi kontejnerët në një makinë virtuale pa hyrë në tastierë.

Vështirësitë:

Gjatë krijimit të makinës docker, procesi im ngriu:

Waiting for SSH to be available...

Docker dhe VMWare Workstation në të njëjtën makinë Windows

Dhe pas ca kohësh përfundoi me më shumë përpjekje për të krijuar një lidhje me makinën virtuale.

Gjithçka ka të bëjë me politikën e certifikatës. Kur krijoni një makinë virtuale, do të keni një direktori ~.dockermachinemachinesdev. Në këtë direktori do të ketë skedarë certifikatash për t'u lidhur nëpërmjet SSH: id_rsa, id_rsa.pub. OpenSSH mund të refuzojë t'i përdorë ato sepse mendon se kanë probleme me lejet. Vetëm docker-machine nuk do t'ju tregojë asgjë për këtë, thjesht do të rilidhet derisa të bëhet e mërzitshme.

zgjidhje: Sapo të fillojë krijimi i një makinerie të re virtuale, shkoni te drejtoria ~.dockermachinemachinesdev dhe ndryshoni të drejtat për skedarët e specifikuar, një nga një.

Pronari i skedarit duhet të jetë përdoruesi aktual, vetëm përdoruesi aktual dhe SISTEMI kanë akses të plotë, të gjithë përdoruesit e tjerë, duke përfshirë grupin e administratorëve dhe vetë administratorët, duhet të fshihen.

Mund të ketë gjithashtu probleme me konvertimin e shtigjeve absolute nga formati Windows në Posix, dhe me vëllimet lidhëse që përmbajnë një lidhje simbolike. Por kjo është një histori tjetër.

Burimi: www.habr.com

Shto një koment