A feladat egyszerű volt, Docker-t kell telepítenem a Windows laptopomra, amely már most is egy állatkert. Telepítettem a Docker Desktop-ot, létrehoztam a konténereket, minden rendben, de hamar észrevettem, hogy a VMWare Workstation nem indítja a virtuális gépeket hibával:
A VMware Workstation és a Device/Credential Guard nem kompatibilisek. A VMware Workstation a Device/Credential Guard letiltása után futtatható.
A munka megállt, sürgősen javítani kell

A Google-ön keresgélve kiderült, hogy ez a hiba a VMWare Workstation és a Hyper-V inkompatibilitásából adódik egy gépen. A probléma ismert, és van hivatalos megoldás a VMWare-től, hogyan , a Microsoft tudásbázisára hivatkozva . A megoldás a Defender Credential Guard letiltása (nekem a Disable Windows Defender Credential Guard 4. pontja segített):
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: /dA Windows újraindítása után a rendszer megkérdezi, hogy valóban le szeretné-e tiltani a Defender Credential Guard-ot. Igen! Így a VMWare Workstation visszatér a normális működéshez, és ott találjuk magunkat, ahol a Docker telepítése előtt voltunk.
A Hyper-V és a VMWare Workstation összekapcsolásának megoldását nem találtam, remélem, hogy az új verziókban már együtt működnek.
Egy másik megoldás
Már régóta használom a VMWare Workstation-t különböző célokra, próbálkoztam a Hyper-V és a VirtualBox használatával, de a funkciók nem feleltek meg az igényeimnek, ezért most is itt ülök. Kiderült, hogy van megoldás a VMWare, a Docker és a VSCode egy munkakörnyezetben való összekapcsolására.
— lehetővé teszi a Docker Engine virtuális gazdán való futtatását, és csatlakozást lehetővé tesz távolról és helyben egyaránt. Ehhez van egy kompatibilitási illesztőprogram a VMWare Workstation-hoz,
A telepítési utasítást különösebben nem fogom megosztani, csak az összes hozzávaló listáját:
- ( a csomag részeként)
- Docker Desktop
Igen, a Docker Desktop, sajnos, szintén szükséges. Ha eltávolították, akkor újra telepítjük, de ezúttal vegyük ki a jelölőnégyzetet az OS módosításainak engedélyezéséről, hogy ne törjük meg újra a VMWare Workstation-t.
Először is szeretném megemlíteni, hogy minden tökéletesen működik a sima felhasználó részéről, az installáló programok kérnek jogkiterjesztést, amikor szükségük van rá, de az összes parancs a parancssorban és a szkriptek az aktuális felhasználóról futnak.
A parancs eredményeként:
$ docker-machine create --driver=vmwareworkstation devA Boot2Docker segítségével létrejön egy dev virtuális gép, amelyben a Docker fut.
Ezt a virtuális gépet csatlakoztathatjuk a VMWare Workstation grafikus felületéhez, a megfelelő vmx fájl megnyitásával. De ez nem kötelező, mivel a VSCode-ot most PowerShell szkripttel kell indítani (valamiért a docker-machine és a docker-machine-driver-vmwareworkstation a bin mappában találhatóak):
cd ~/bin
./docker-machine env dev | Invoke-Expression
codeMegnyílik a VSCode a helyi gépen végzett kódoláshoz és a Dockerhez a virtuális gépen. A plugin kényelmesen kezeli a konténereket a virtuális gépen anélkül, hogy a konzolba kellene belépni.
Nehézségek:
A docker-machine létrehozása során a folyamat megakadt:
Waiting for SSH to be available... 
És egy idő után a virtuális géphez való kapcsolódási kísérletek túllépésével végződött.
A probléma a tanúsítványok politikájában rejlik. Amikor létrehoz egy virtuális gépet, a ~.dockermachinemachinesdev könyvtárban kap egy tanúsítvány fájlokat a SSH kapcsolat létrehozásához: id_rsa, id_rsa.pub. Az OpenSSH visszautasíthatja ezek használatát, mert a jogosultságokkal kapcsolatos problémákat észlel. Csak a docker-machine erről nem mond semmit, és egyszerűen újra és újra megpróbálkozik, amíg eleged nem lesz belőle.
Megoldás: Amint elkezdődik egy új virtuális gép létrehozása, lépjünk be a ~.dockermachinemachinesdev könyvtárba, és módosítsuk a megadott fájlok jogosultságait, egyesével.
A fájl tulajdonosának az aktuális felhasználónak kell lennie, a teljes hozzáférés csak az aktuális felhasználónál és a SYSTEM-nél legyen, minden más felhasználót, beleértve az adminisztrátor csoportot és magukat az adminisztrátorokat, el kell távolítani.
Lehetnek problémák az abszolút utak Windows formátumból Posix formátumba való átalakításával, valamint a symbolic link-eket tartalmazó kötetek kötésével. De ez már egy másik történet.
Forrás: habr.com
