Detyra ishte e thjeshtë, të vendosësh Docker në laptopin tim të punës me Windows, ku tashmë kishte një zhuar. Instalova Docker Desktop, krijova kontenierë, gjithçka ishte në rregull, por shpejt e kuptova se VMware Workstation kishte ndaluar së funksionuari me një gabim:
VMware Workstation dhe Device/Credential Guard nuk janë të përshtatshme. VMware Workstation mund të ekzekutohet pas çaktivizimit të Device/Credential Guard.
Puna u ndal, duhet ta rregulloj menjëherë

Përmes një kërkimi në Google, u zbulua se ky gabim ndodhte për shkak të papajtueshmërisë së VMware Workstation dhe Hyper-V në të njëjtën makinë. Problemi është i njohur dhe ka një zgjidhje zyrtare nga VMware si ta , me një lidhje në bazën e njohurive të Microsoft . Zgjidhja përfshin çaktivizimin e Defender Credential Guard (më ndihmoi pika 4 e seksionit Disable 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 renovimit të Windows, do t'ju pyesë nëse dëshironi të çaktivizoni Defender Credential Guard. Po! Kështu, VMWare Workstation do t'i kthehet funksionimit normal, dhe ne do të jemi në të njëjtin vend si para instalimit të Docker.
Nuk kam gjetur zgjidhje si të pajtojmë Hyper-V dhe VMWare Workstation, shpresoj që në versionet e reja ata do të bashkëpunojnë.
Një rrugë tjetër
Prej kohësh kam kaluar në VMWare Workstation për qëllime të ndryshme, përpiqesha të kaloj në Hyper-V dhe VirtualBox, por funksionaliteti nuk më kënaqte për nevojat e mia, prandaj vazhdoj të qëndroj këtu. Doli se ka një zgjidhje si të bashkëpunojmë VMWare, Docker dhe VSCode në një mjedis pune.
— lejon të запускапрос në Docker Engine në një host virtual dhe të lidheni me të si në distancë, ashtu edhe në vend. Dhe për të ekziston një driver kompatibiliteti me VMWare Workstation,
Nuk do ta përsëris udhëzimin për instalim, vetëm listën e përbërësve:
- ( në paketë)
- Docker Desktop
Po, Docker Desktop, fatkeqësisht, gjithashtu do të nevojitet. Nëse e keni fshirë, duhet ta instaloni përsëri, por këtë herë duke hequr kutinë për ndryshimet në OS, në mënyrë që të mos thyejnë përsëri VMWare Workstation.
Dua të theksoj që gjithçka funksionon shkëlqyer nga përdoruesi i zakonshëm, programet e instalimit do të kërkojnë eskalimin e të drejtave kur të jetë e nevojshme, por të gjitha komandat në linjën e komandës dhe skriptet ekzekutohen nga përdoruesi aktual.
Në përfundim, me komandën:
$ docker-machine create --driver=vmwareworkstation devnga Boot2Docker do të krijohet një virtual këtu dev brenda së cilës do të jetë Docker.
Kjo virtual këtu mund të lidhet në ndërfaqen grafike të VMWare Workstation, duke hapur skedarin përkatës vmx. Por kjo nuk është e domosdoshme, pasi VSCode tani duhet të niset me skriptin PowerShell (për arsye të panjohura, docker-machine dhe docker-machine-driver-vmwareworkstation përfunduan 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ë virtual këtu. Ky plug-in mundëson menaxhimin e lehtë të konteinerëve në virtual këtu pa hyrë në konsolë.
Sfidat:
Gjatë procesit të krijimit të docker-machine, procesi ngeci:
Duke pritur që SSH të jetë në dispozicion... 
Dhe pas një kohe të caktuar përfundoi me tejkalimin e përpjekjeve për të vendosur lidhjen me virtual këtu.
E gjithë çështja është politika për certifikatat. Kur krijoni një makinë virtuale, do të keni një katalog ~.dockermachinemachinesdev, në të cilin do të gjeni skedarët e certifikatës për lidhjen SSH: id_rsa, id_rsa.pub. OpenSSH mund të refuzojë t’i përdorë ata, sepse mendon se ata kanë probleme me të drejtat e aksesit. Por docker-machine nuk do t’jua thotë asgjë për këtë, thjesht do të vazhdojë të rikthehet derisa t’i mërzitë.
Zgjidhja: Sapo të fillojë krijimi i një makine virtuale të re, hyjmë në katalogun ~.dockermachinemachinesdev dhe ndryshojmë të drejtat për skedarët e përmendur, një nga një.
Pronari i skedarit duhet të jetë përdoruesi aktual, të drejtë të plota ka vetëm përdoruesi aktual dhe SYSTEM, ndërsa të gjithë përdoruesit e tjerë, duke përfshirë grupin e administratorëve dhe vetë administratorët duhet të fshihen.
Gjithashtu mund të ketë probleme me konvertimin e rrugëve absolute nga formati Windows në Posix, dhe me lidhjen e volumenëve që përmbajnë lidhje simbolike. Por kjo është një histori tjetër.
Burimi: habr.com
