Docker ja VMWare Workstation samas Windowsi masinas
Ülesanne oli lihtne, installige Docker minu Windowsiga töölauale, millel on juba loomaaed. Installisin Docker Desktopi, lõin konteinerid, kõik oli ok, kuid avastasin kiiresti, et VMWare Workstation lõpetas virtuaalmasinate käivitamise veaga:
VMware Workstation and Device/Credential Guard are not compatible. VMware Workstation can be run after disabling Device/Credential Guard.
Töö on seisma jäänud, vajab kiiret korda
Guugeldades selgus, et see viga tekib VMWare Workstationi ja Hyper-V kokkusobimatuse tõttu samas masinas. Probleem on teada ja selline ametlik VMWare lahendus on olemas parandama, lingiga Microsofti teadmistebaasi Windows Defenderi mandaadivalve haldamine. Lahendus on keelata Defender Credential Guard (mind aitas jaotise Keela Windows Defender Credential Guard punkt 4):
Pärast taaskäivitamist küsib Windows teilt, kas keelata Defender Credential Guard. Jah! Nii naaseb VMWare Workstation normaalsesse töösse ja oleme samas kohas, kus enne dokkeri installimist.
Ma ei ole ikka veel leidnud lahendust Hyper-V ja VMWare Workstationi ühitamiseks, loodan, et nad saavad uutes versioonides sõpradeks.
Teine tee
Olen VMWare Workstationiga erinevatel eesmärkidel pikka aega konksus olnud, proovinud Hyper-V-le ja VirtualBoxile üle minna, kuid funktsionaalsus ei rahuldanud mu vajadusi ja olen siiani ummikus. Selgus, et on olemas lahendus, kuidas ühendada VMWare, Docker ja VSCode ühes töökeskkonnas.
Dockeri masin — võimaldab käivitada Docker Engine'i virtuaalses hostis ja sellega ühenduse luua nii eemalt kui ka kohapeal. Ja selle jaoks on olemas VMWare Workstationi ühilduvuse draiver, link githubile
Paigaldusjuhiseid ma eriti ümber ei räägi, vaid koostisosade loetelu:
Jah, kahjuks läheb vaja ka Docker Desktopi. Kui lammutasite selle, installige see uuesti, kuid seekord eemaldage märkeruut OS-i muutmise kohta, et mitte uuesti VMWare Workstationi rikkuda.
Tahaksin kohe märkida, et lihtkasutajal toimib kõik hästi, installiprogrammid küsivad vajadusel õiguste eskalatsiooni, kuid kõik käsureal olevad käsud ja skriptid käivitatakse praeguselt kasutajalt.
Selle tulemusena käsk:
$ docker-machine create --driver=vmwareworkstation dev
Boot2Dockerist luuakse arendaja virtuaalmasin, mille sisse installitakse Docker.
Selle virtuaalmasina saab ühendada VMWare Workstationi graafilise liidesega, avades vastava vmx faili. Kuid see pole vajalik, sest PowerShell peab nüüd VSCode'i käivitama skriptina (miskipärast sattusid docker-machine ja docker-machine-driver-vmwareworkstation prügikasti kausta):
cd ~/bin
./docker-machine env dev | Invoke-Expression
code
VSCode avaneb, et töötada koos koodiga kohalikus masinas ja Dockeriga virtuaalses masinas. Sisse panema Docker Visual Studio koodi jaoks võimaldab mugavalt hallata konteinereid virtuaalmasinas ilma konsooli sisenemata.
Raskused:
Dokkimismasina loomise ajal minu protsess hangus:
Waiting for SSH to be available...
Ja mõne aja pärast lõppes see uute katsetega virtuaalmasinaga ühendust luua.
Kõik on seotud sertifikaadipoliitikaga. Virtuaalse masina loomisel on teil kataloog ~.dockermachinemachinesdev, selles kataloogis on sertifikaadi failid SSH kaudu ühenduse loomiseks: id_rsa, id_rsa.pub. OpenSSH võib keelduda nende kasutamisest, kuna arvab, et neil on õigustega probleeme. Ainult dokkimismasin ei ütle teile sellest midagi, see loob lihtsalt uuesti ühenduse, kuni hakkab igav.
lahendus: Niipea kui uue virtuaalmasina loomine algab, minge kataloogi ~.dockermachinemachinesdev ja muutke ükshaaval määratud failide õigusi.
Faili omanik peab olema praegune kasutaja, ainult praegusel kasutajal ja SÜSTEEMIl on täielik juurdepääs, kõik teised kasutajad, sealhulgas administraatorite grupp ja administraatorid ise, tuleb kustutada.
Probleeme võib esineda ka absoluutsete teede teisendamisel Windowsi vormingust Posixisse ja sümboolset linki sisaldavate köidetega. Aga see on teine lugu.