Windows 10-ben a legegyszerűbben a Docker Desktop telepítésével futtathatsz Docker konténereket. Az előnye még, hogy nem csak Linux vagy Windows konténereket tudsz vele futtatni, hanem egyidőben mindkettőt. Bár egyszerre csak az egyiket támogatja, de a konténereid nem vesznek el, amikor a két mód között átváltasz, csak a docker parancs a kiválasztott módnak megfelelő docker démont fogja látni alapértelmezetten. Előfordulhat, hogy nem akarod engedélyezni a Hyper-V feature-t, de az alapértelmezett telepítés szerint az kötelező. Én viszont mutatok egy módszert ennek kikerülésére, persze ára is van. Ha nem szeretsz olvasni, azs em gond. Dőlj hátra és élvezd az oktatóvideót.
A telepítéshez a Docker Desktop weboldalára kell ellátogatni, majd letölteni a telepítőt. A folyamat egyszerű. Első lépésben csak annyit kell megadni, hogy akarjuk-e telepíteni a WSL 2-höz szükséges Windows komponenseket. Mivel ma már a Linux konténerek futtatásához a WSL 2-t használja a Windows 10, érdemes engdélyezni. Az asztalra az ikont ízlés szerint ki lehet rakatni vele, majd az "Ok" gombot megnyomod és csak várni kell, amíg végez.
Ha a WSL 2 nem volt még telepítve, a Docker Desktop igényelheti a Windows újraindítását az alábbi ablakkal.
Én viszont már tudom, hogy szeretnék Windows konténereket, aminek az engedélyezése szintén újraindítást igényelne, ezért még az újraindítás előtt ezt is engedélyezem PowerShellből:
A cikk a Hyper-V nélküli telepítésről szól, de ha mégis szeretnéd használni, akkor a "Microsoft-Hyper-V" nevű feature-t is engedélyezd.
Bár a Linux konténerekhez a WSL 2 miatt nem kell már engedélyezni a Hyper-V-t, egyelőre a Windows konténerek jobban függnek a Windows verziójától, mint Linux esetén a Linux konténerek a Linux kerneltől, így alapértelmezetten a Docker Desktop nem a "process" izolációt, hanem a Hyper-V-t választja, így pedig további problémákat okoz, ha mellette szeretnél VirtualBoxszal vagy VMWare-rel is virtualizálni. Nem beszélve arról, hogy a konténerek egyik nagy előnye Linuxon, hogy régebbi verziókat is lehet futtatni újabb hoszt rendszeren. Ezt a Microsoft is tudja, dolgoznak a problémán. A Windows verziók kompatibilitásával külön dokumentáció foglalkozik: Windows Container Version Compatibility.
Ahogy a Hyper-V dokumentációja utal rá, az engedélyezésének lehetnek további hátrányai, mivel ebben az esetben a gazda operációs rendszer is a Hyper-V réteg felett fut, ami hatással lehet a teljesítményre. Bár a VirtualBox is már képes futni a Hyper-V mellett, még a 6.1-es verzióban is csak "Experimental" feature, azaz előfordulhatnak hibák.
A következő parancsot tehát akkor futtasd csak le PowerShellben, ha a "Saját Windows service" szekcióban írtakat már nem akarod elvégezni. És persze csak ha a Windows verziód támogatja a Hyper-V-t:
Újraindítás után egy kicsit többet kell várni, ha a WSL 2-t is először konfigurálja a Windows, de miután elindítod a menüből vagy az asztalról a Dockert, egy újabb figyelmeztetés ugrik fel. A Linux kernelt ugyanis külön le kell tölteni, a https://aka.ms/wsl2kernel. oldalról, ami után a Docker Desktopot kell majd újraindítani.
Ha most a wsl --list --verbose
paranccsal kilistázod a wsl disztribúciókat, lesz legalább kettő. Ezek viszont nem arra vannak, hogy belépve futtasd a docker parancsot. A windows parancssorból vagy PowerShellből elérhető lesz a "docker", de ha a WSL 2 előre volt telepítve és már meg volt nyitva a PowerShell, akkor nyiss egy újat, amiben már elérhető lesz a "docker" parancs.
Saját Windows Service
Ha a Docker telepítése után nem engedélyezted a Hyper-V szolgáltatást, de korábban már engedélyezve volt, akkor most le kell tiltani. Ha már le volt tiltva, akkor sem okoz problémát, ha futtatod a következő parancsot PowerShellben:
Ha futtatod a parancsot és kéri az újraindítást, akkor csak újraindítás után folytasd a következő lépéseket. A letiltás után viszont a Docker Desktopban nem tudsz átváltani már Windows konténer módba. Ilyenkor a megoldás vagy a Docker démon Windowsos stabil verziójának letöltése Docker Desktop nélkül, vagy a Docker Desktop-ban levő démon használata. Mivel nem tudok róla, hogy konkrét verziót le lehetne tölteni, a következőkben a Docker Desktopot használom fel egy saját szolgáltatás indítására.
Most pedig létrehozzuk a Windows konténeres szolgáltatást. Ehhez az alábbi paranccsal indítsd el a process izolációval működő új docker démont:
Majd indítsd el
És ellenőrizd le, hogy "RUNNING"-e az állapota
Ami után a STATE" sorban "RUNNING" kell, hogy álljon. Ekkor pedig már csatlakozhatsz az új docker démonhoz:
Hogy ne kelljen ezt mindig beírni, egy külön kontextust hozhatsz létre ennek a démonnak a Docker kliensben
A docker context list
parancsra látható is, hogy már két kontextus van, de a csillag még a "default" mellett van, azaz a Linux konténerekhez kapcsolódik. Az átváltáshoz futtasd a docker context use docker-isolation-process
parancsot.