Docker ja VMWare Workstation ühel Windows masinal

Ülesanne oli lihtne, paigaldada Docker oma töölaual Windowsi sülearvutisse, kus juba on igasuguseid erinevaid tarkvarasid. Paigaldasin Docker Desktop'i, lõin konteinerid, kõik oli korras, kuid kiiresti avastasin, et VMWare Workstation ei käivita virtuaalseid masinaid, andes errori:

VMware Workstation ja Device/Credential Guard ei ole ühilduvad. VMware Workstation'i saab käivitada pärast Device/Credential Guard'i keelamist.

Töö seisis, tuleb kiiresti parandada

Docker ja VMWare Workstation ühel Windows masinal

Gugeldamise teel selgus, et see error tuleneb VMWare Workstation'i ja Hyper-V ühilduvusprobleemist ühel masinal. Probleem on tuntud ja VMware-l on ametlik lahendus, kuidas seda parandada, koos viitega Microsofti teadmistebaasile Manage Windows Defender Credential Guard. Lahendus seisneb Defender Credential Guard'i keelamises (minule aitas punkti 4 allpool 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: /d

Pärast Windowsi taaskäivitamist küsitakse, kas Defender Credential Guard tõesti välja lülitada. Jah! Nii naaseb VMWare Workstation normaalsesse tööseisundisse ja oleme samas kohas, kus olime enne Docker'i installimist.

Ma ei leidnud lahendust, kuidas Hyper-V ja VMWare Workstation sõbralikuks muuta, loodan, et uutes versioonides saavad nad omavahel läbi.

Teine võimalus

Olen ammu juba VMWare Workstation'ile üle läinud erinevateks eesmärkideks, üritasin hüpata Hyper-V'le ja VirtualBox'ile, kuid funktsionaalsus ei rahuldanud minu vajadusi, seega olen siiani samas. Selgus, et on lahendus, kuidas VMWare, Docker ja VSCode ühes töökeskkonnas sõbralikult koos töötada.

Docker Machine — võimaldab Docker Engine'i käitada virtuaalses hostis ning sellele pääseb ligi nii kaugelt kui ka kohapealt. Ja selle jaoks on olemas VMWare Workstation'i ühilduvuse draiver, link GitHub'i

Installeerimise juhiseid ma pikalt ei selgita, ainult koostisosade loetelu:

  1. Docker Toolbox (Docker Machine komplektis)
  2. Docker Machine VMWare Workstation'i draiver
  3. Docker Desktop

Jah, kahjuks on vaja ka Docker Desktop'i. Kui olete selle kustutanud, siis paigaldage see uuesti, kuid seekord eemaldage märkeruut OS-i muudatuste tegemiseks, et VMWare Workstation'i jälle ei rikuks.

Tahan kohe märkida, et kõik töötab suurepäraselt tavalise kasutaja jaoks, installimisprogrammid paluvad õiguste eskaleerimist siis, kui nad seda vajavad, kuid kõik käsud käsureas ja skriptid täidetakse praeguse kasutaja õigustes.

Kokkuvõttes käsuga:

$ docker-machine create --driver=vmwareworkstation dev

Boot2Dockerist luuakse virtuaalmasin dev, mille sees on Docker.

Seda virtuaalmasinat saab siduda VMware Workstationi graafilise liidese, avades vastava vmx faili. Kuid see ei pruugi olla vajalik, sest nüüd tuleb VSCode'i käivitamiseks kasutada PowerShelli skripti (mulle tundub, et docker-machine ja docker-machine-driver-vmwareworkstation olid just kaustas bin):

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

Avatakse VSCode, et töötada koodiga kohalikus masinas ja dockeri virtuaalmasinas. Loodud plugin Docker for Visual Studio Code võimaldab mugavalt hallata konteinerite virtuaalmasinas, ilma et peaksite konsooli minema.

Raskused:

Docker-machine'i loomise protsessis takerdus mul protsess:

Ootan, et SSH oleks saadaval...

Docker ja VMWare Workstation ühel Windows masinal

Ja pärast mõnda aega lõppes see ületades katsete arvu luua ühendust virtuaalmasinaga.

Kõik on seotud sertifikaatide poliitikaga. Virtuaalmasina loomisel luuakse kataloog ~.dockermachinemachinesdev, kus asuvad SSH-ühenduse sertifikaadifailid: id_rsa, id_rsa.pub. OpenSSH võib keelata nende kasutamise, kuna arvab, et neil on juurdepääsuõiguste probleem. Ainult docker-machine ei ütle teile sellest midagi, vaid proovib lihtsalt pidevalt uuesti ühendust luua, kuni see tüütuks muutub.

Lahenduseks on: Niikaua kui uus virtuaalmasin luuakse, minge katalooge ~.dockermachinemachinesdev ja muutke õigusi igaühel failil eraldi.

Faili omanik peab olema praegune kasutaja, täielik juurdepääs on ainult praegusel kasutajal ja SYSTEM-il, kõik teised kasutajad, sealhulgas administraatorite rühm ja ise administraatorid, tuleb eemaldada.

Samuti võivad esineda probleemid Windowsi formaadi absoluutsete teede konverteerimisel Posix formaati ja sümboolsete linkide sisaldavate mahtude sidumisel. Kuid see on juba teine lugu.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster