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 sokáig nem sikerült beüzemelnem, https://docs.docker.com/docker-for-windows/wsl-tech-preview/ hiába próbáltam. Aztán egyszer csak megjelent a jelölőnégyzet a WSL2-opció mellett.)

Kellett egy

export DOCKER_HOST=tcp://localhost:2375

a .bashrc aljába, és már ment, aminek mennie kellett. (Amikor aztán sikerült beüzemelni a WSL2-t, akkor ez feleslegessé vált.)

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 gond van, hogy nem látszanak a 172.* gépek pinggel, és ezt próbáltam is leküzdeni route add paranccsal, de felesleges volt.

Az igazi nagy gáz 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

Ráadásul a MobaXterm alól elindított WSL bash prompt olyan, hogy X Window is indul vele, így mennek grafikus alkalmazások is, pl. meld.

Eléggé bosszantó, hogy nem megy az sshfs, csak kerülőúton: https://superuser.com/questions/1353169/getting-sshfs-working-on-wsl-or-finding-an-alternative (itt meglepő volt, hogy a megkeresett kulcsot az Open gombbal meg is kell nyitni ahhoz, hogy hozzá lehessen adni), vagy a MobaXterm baloldalán automatikusan megjelenő sftp sáv is használható.

Szerk: WSL2-ben megy az sshfs is. :-)

A snap rendszer nem áll rendelkezésre a WSL-ben (csak a WSL2-ben).

Bosszantó, hogy Windowsban (meg WSL-ben) nincs AltGr+Z (gondolatjel), pár ezt orvosolja a hiánypótló írás: https://hup.hu/node/168453, valamint a három egérkattintás nem jelöli ki az egész sort.

A https://www.fosshub.com/ConEmu.html nem rossz, legalább a ctrl+pageUp/Down megy, bár bosszantóan lassan reagál a gombnyomásokra.

Hasznos írás: https://www.sitepoint.com/wsl2-windows-terminal/

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

Míg át nem álltam a WSL2-re (és ki nem kellett cserélnem a resolv.conf-ot 8.8.8.8-ra) mentek a grafikus linuxos programok is MobaXTerm alól.

Immár nem.

Mit kéne átállítanom?

(Kellene a regressziós tesztekhez a böngésző indítása dockerből.)