Docker windows alatt

Szerintem operációs rendszerek esetén jó taktika, ha csak az fut rajta, amit az ember használ is. A docker is egy ilyen dolog, amit csak ritkán használok, és ha használom, akkor csak linux alatt, ami ugye az esetemben WSL ubuntu (windows subsystem for linux).

Ubuntut viszonylag egyszerű telepíteni windows alá, de nekünk olyan ubuntu kell, ami WSL2-t használ.

Akit érdekel mi is az a wsl2 járjon utána

A telepített wsl példányokat az alábbi módon tudjuk kilistázni:

wsl -l -v

A WSL2-nek van pár peremfeltétele, aminek meg kell felelni, és amin a többség elvérzik:

  • Top verziót használjunk a windows 10 vagy 11-ből (Windows update)
  • Biosban be legyen kapcsolva a virtualizácó
  • Windows alatt telepítve legyen a Virtual Machine feature
  • Le legyen töltve a wsl2 kernel frissítés (külön exe)

Hogy ezeket az előfeltételeket hogy lehet megteremteni, arról van egy jó leírás itt:

https://s1gr1d.medium.com/how-to-set-up-linux-on-windows-with-wsl-2-debe2a64d20d

Ha ezek megvannak (a restart fontos, én pl. kihagytam), akkor két út van:

Még nincs WSL linux telepítve, és szeretnénk, ez esetben nincs más dolgunk, mint alapértelmezetté tenni a wsl2-t

wsl --set-default-version 2

majd telepíteni a microsoft app store-ból.

Ha már van WSL linuxunk, de nem WSL2 akkor frissíthetjük az alábbi módon:

wsl --set-version Ubuntu 2

Ahol az ubuntu az a név, amit a fenti wsl -l -es parancs kimeneténél a name mezőben látsz.

Ha a frissítés hiba nélkül lefut, akkor a wsl -l már kettes verziót fog kiírni. Ha nem fut le hiba nélkül akkor vagy az előfeltételek közül hiányzik valami (nem írja ki, hogy mi, nálam a restart volt 🙂 ), vagy valami egyéb hiba van, amiből azért lehet bőségesen

Ha ez megvan, és rendelkezünk egy WSL2-es linuxal, akkor már csak a dockert-t kell életre kelteni. Ennek a módja az alábbi:

Győződjünk meg róla, hogy semmilyen docker maradvány nincs a rendszeren:

apt remove docker docker-engine docker.io containerd runcsudo apt remove docker docker-engine docker.io containerd runc

Telepítsük az előfeltételeket, és adjuk hozzá a docker-t a source listához:

sudo apt install --no-install-recommends apt-transport-https ca-certificates curl gnupg2
source /etc/os-release
curl -fsSL https://download.docker.com/linux/${ID}/gpg | sudo apt-key add -
echo "deb [arch=amd64] https://download.docker.com/linux/${ID} ${VERSION_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker $USER

Ezek után még szükség lesz egy docker specifikus könyvtárra, ahol a socket elérhető a dockerd számára. Ehhez kell egy config:

sudo mkdir /etc/docker
sudo nano /etc/docker/daemon.json

A fájl tartalma legyen:

{
   "hosts": ["unix:///var/run/docker.sock"]
}

Ha ez megvan már csak indítani kell a docker démont a használat előtt:

sudo dockerd

És utána működni fognak a docker-es utasítások.