Detyra ishte e thjeshtë, të vendosje Docker në laptopin tim të punës me Windows, i cili tashmë kishte një zoo. Instalova Docker Desktop, krijova kontejnerë, gjithçka ishte në rregull, por shpejt zbuluam se VMWare Workstation nuk po çante më makinat virtuale me një gabim:
VMware Workstation dhe Device/Credential Guard nuk janë të kompatibilitetshme. VMware Workstation mund të ekzekutohet pas çaktivizimit të Device/Credential Guard.
Puna u ndal, nevojitet të rregullohet urgjentisht.

Me metodën e kërkimit në Google u zbuluar se ky gabim ndodh për shkak të moskompatibilitetit midis VMWare Workstation dhe Hyper-V në një makinë. Problemi është i njohur dhe ka një zgjidhje zyrtare nga VMWare se si ta , me lidhje në bazën e të dhënave Microsoft. . Zgjidhja përfshin çaktivizimin e Defender Credential Guard (më ndihmoi pika 4 e seksionit Çaktivizo 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: /dPas rinisjes së Windows, do të pyesë nëse dëshiron vërtet të çaktivizosh Defender Credential Guard. Po! Në këtë mënyrë VMWare Workstation do të kthehet në punë të normalizuar, dhe ne do të jemi në të njëjtin vend si përpara instalimit të Docker.
Nuk gjetëm zgjidhje se si të pajtojmë Hyper-V me VMWare Workstation, shpresoj që në versionet e reja të bëhen të pajtueshmëm.
Një rrugë tjetër.
Unë tashmë kam kaluar prej një kohe të gjatë në VMWare Workstation për qëllime të ndryshme, përpiqesha të kaloj në Hyper-V dhe VirtualBox, por funksionaliteti nuk përmbushte nevojat e mia, kështu që deri më sot qëndroj. U zbulua se ka një zgjidhje se si të sjellim së bashku VMWare, Docker dhe VSCode në një mjedis pune.
— lejon të startoni Docker Engine në një host virtual dhe të lidheni me të nga distanca, si dhe lokal. Dhe për të, ka një drejtues kompatibiliteti me VMWare Workstation,
Nuk do ta përshkruaj në detaje atë për procedurën e instalimit, vetëm listën e përbërësve:
- ( në paketë)
- Docker Desktop
Po, Docker Desktop, fatkeqësisht, gjithashtu do të jetë e nevojshme. Nëse e ke eliminuar, atëherë instaloje përsëri, por kësaj here duke hequr shenjën nga kutia për të bërë ndryshime në OS, për të mos prishur përsëri VMWare Workstation.
Dua të theksoj menjëherë se gjithçka funksionon shkëlqyeshëm nga një përdorues i zakonshëm, programet e instalimit do të kërkojnë eskalimin e të drejtave kur të jetë e nevojshme, por të gjitha komandat në komandë dhe skriptet ekzekutohen nga përdoruesi aktual.
Si rezultat, me komandën:
$ docker-machine create --driver=vmwareworkstation devNga Boot2Docker do të krijohet një makinë virtuale dev brenda së cilës do të jetë Docker.
Këtë makinë virtuale mund ta lidhnni në ndërfaqen grafike të VMWare Workstation duke hapur skedarin përkatës vmx. Por kjo nuk është e detyrueshme, pasi tani VSCode do të kërkojë të ekzekutojë skriptin PowerShell (për një arsye, docker-machine dhe docker-machine-driver-vmwareworkstation u gjetën pikërisht në dosjen bin):
cd ~/bin
./docker-machine env dev | Invoke-Expression
codeVSCode do të hapet për të punuar me kodin në makinën lokale dhe Docker në makinën virtuale. Ndihmësi lejon të menaxhoni lehtësisht kontejnerët në makinën virtuale pa hyrë në konsolë.
Vështirësi:
Gjatë procesit të krijimit të docker-machine, procesi është dërguar:
Waiting for SSH to be available... 
Dhe pas një kohe të gjatë përfundoi me tejkalimin e përpjekjeve për të krijuar lidhjen me makinën virtuale.
E gjithë kjo ka të bëjë me politikën e certifikatave. Kur krijoni një makinë virtuale, do të keni një direktorium ~/ .dockermachinemachinesdev, në këtë direktorium do të jenë skedarët e certifikatave për lidhjen nëpërmjet SSH: id_rsa, id_rsa.pub. OpenSSH mund të refuzojë t'i përdorë ato, pasi të mendojë se kanë probleme me të drejtat e aksesit. Por docker-machine nuk do t’ju thotë asgjë për këtë, thjesht do të vazhdojë të ribindet derisa të mërzitet.
Zgjidhja: Sa më shpejt të fillojë krijimi i një makine virtuale të re, hyjmë në direktoriumin ~/ .dockermachinemachinesdev dhe ndryshojmë të drejtat për skedarët e përmendur, një për një.
Pronari i skedarit duhet të jetë përdoruesi aktual, me akses të plotë vetëm për përdoruesin aktual dhe SYSTEM, të gjithë përdoruesit e tjerë, përfshirë grupin e administratorëve dhe vetë administratorët duhet të hiqen.
Gjithashtu mund të ketë probleme me shndërrimin e rrugëve absolute nga formati Windows në Posix dhe me lidhjen e volumeve që përmbajnë lidhje simbolike. Por kjo është një histori tjetër.
Burimi: habr.com
