WSL, docker

Új munkahelyemen, (natív) linux mentes laptopon WSL alatt próbáltam beüzemelni régi, jól bevált dockeres megoldásaimat.

Nem akarta az igazságot sokáig.

Ubuntu 18.04 lett a WSL disztribúció.

Újdonság volt, hogy Docker Desktop nélkül nem moccanhatok. (A WSL2-t nem sikerült beüzemelnem, https://docs.docker.com/docker-for-windows/wsl-tech-preview/ hiába próbáltam. De nem baj.)

Kellett egy

export DOCKER_HOST=tcp://localhost:2375

a .bashrc aljába, és már ment, aminek mennie kellett.

Egy olyan dockeres megoldással küzdöttem, amelyben több entitás kommunikál egymással (nginx, php, postgres).

Eleinte azt hittem, hogy valami hálózati gebasz van, hogy nem látszanak a 172.* gépek pinggel, és ez ügyben mocorogtam is a route add paranccsal, de felesleges volt.

Az igazi nagy szopattyú az abból fakadt, hogy a felcsatolt kötetek (mounted volumes) egyszerűen üresen maradtak. Van egyfajta kettős könyvelés a WSL-ben, tehát látszólag van egy szép linuxos fájlrendszer, /home/pistikével stb, de ez nem mond sokat a Windowsos dockernek. Hanem az NTFS-es útvonalat kell neki megadni a docker-compose-ban, lásd https://github.com/docker/for-win/issues/25 .

Tehát a teendő az volt, hogy egyrészt a Docker Desktop felületen engedni kellett a C könyvtár használatát a Resources-ban, másrészt nem ./valami vagy /home/pistike/valami jelleggel mehetett a "volumes" (vagy a -v), hanem /c/Users/Nevem/AppData/Local/Packages/CanonicalGroupLimited.Ubuntu18.04onWindows_oppare/LocalState/rootfs/home/pistuka/docker_yii2 jelleggel. Nem "C:/", hanem /c/, kis cével az elején. (Ez a C: meghajtó egyébként /mnt/c -ként látszik a linuxos fájlrendszerben.)

Elvileg a szimbolikus linkek sem örvendeznek nagy köztiszteletnek a felcsatolt helyeken, de engem ez nem zavart.

Sokkoló volt, hogy a sudo-val nyert root állapot gyengébb volt, mint a windowsos adminisztrátor.

Hasznos alias: \\wsl$\Ubuntu-18.04\home\pistuka\akarmi

Ezen tanulságok megemésztése után aztán már kibontakozhatott a munka.

Hozzászólások

Szerkesztve: 2020. 02. 12., sze - 18:56

Sokkoló volt, hogy a sudo-val nyert root állapot gyengébb volt, mint a windowsos adminisztrátor.

A Linux disztribúció a saját Windows felhasználód nevében van telepítve amihez nem kell adminisztrátornak lenned, ezért érthető miért gyengébb a sudo.

Egyébként wsl2-vel már natív Linuxos Dockert is lehet futtatni.

WSL2 csak Insider build-ben van benne:

WSL 2 is only available in Windows 10 builds 18917 or higher