Dockerrel fejlesztenék, de hogyan kezdjek hozzá?

A cikk borítóképe. Kérdőjel fotó a pixabay.com-ról

A virtuális gépekkel szemben a Docker más gondolkodást és folyamatokat igényel. Ami előbbi esetben nagy problémát jelent, az utóbbinál gyerekjáték, hiszen arra találták ki. Az előnyök viszont nincsenek ingyen, így lesznek más problémák, amik megdolgoztatják az agytekervényeket. Logikusan és türelmesen viszont ezek az akadályok is átugorhatók az egyes lépések megértésével. Megpróbálom összefoglalni, mik azok a lépések, ha Dockerrel szeretnél dolgozni webfejlesztés közben.

Cél

Természetesen a cél ugyanaz, mint a virtuális gépekről szóló eszmefuttatásomban is volt. Egy webfejlesztői környezet kialakítása, de most már konténerek segítségével. Ez persze nem jelenti azt, hogy ne lehetne virtuális gépeket is bevetni mellette, csak épp nem feltétlenül szükséges.

Ettől függetlenül jó eséllyel továbbra is szeretnél egyszerre több, különböző verziót futtatni egyes programokból, mint a PHP, MySQL és Apache HTTPD webszerver is, csak ez önmagában már nem lesz kihívás. Ráadásul más adatbázisokból és webszerverből is bátran választhatsz több közül.

A virtuális gépes megoldáshoz képest jó lenne, ha meg tudnád spórolni a konfiguráció nagy részét és így például virtuális hosztokat sem kellene készítened a webszerveren minden újabb oldal elindításakor. A mégis szükséges gyakoribb konfigurációkat pedig paraméterekkel lehetne megadni.

Bár szeretik a Dockert platformfüggetlennek becézni, Linux konténerek indítása Linux hoszton a legzökkenőmentesebb, máskülönben egy rejtett virtuális gépen fognak indulni a konténerek, ami egy kicsit korlátozza a lehetőségeket. Így tehát elsősorban érdemes egy Linux gazda rendszerre koncentrálni, de szükség esetén más operációs rendszeren virtuális géppel együtt is nagy segítségnek bizonyul.

Ahelyett, hogy telepítési útmutatókat készítenél magadnak rengeteg manuális művelettel, jó lenne, ha a telepítést automatikussá tudnád tenni, az eredményt pedig közzétehetnéd egy nyilvános vagy egy privát tárolóban.

Nem az a cél, hogy bármilyen alkalmazást be tudj varázsolni konténerbe a sorozat végére, hanem hogy világosabb legyen, mi szükséges ahhoz, hogy ezt megtehesd.

Haladás

Ahogy már utaltam rá, kicsit más elvet kell követni a virtualizált komplett gépekhez képest. Most ugyanis alapszinten nem kell időzni a szerverek és értelmezők forrásból történő telepítésével. A legtöbb esetben azok már készen vannak becsomagolva és arra várnak, hogy kiadjam a parancsot az indulásra. A kérdés ugyanakkor marad, hogy hol fognak azok indulni, és hogyan kerülnek oda. A konténerek előtti korszakomban FTP-ről, SSH-ról és hasonló protokollokról beszéltem, amin keresztül felmásolhatod a programot a végleges helyére, ahol az majd működni fog. A forráskódok szempontjából erre továbbra is van mód, de a konténerek miatt meg kell barátkozni a registry fogalmával, hogy a konténerek alapjául szolgáló sablonokat oda feltölthesd. Nyilván, bizonyos körökben már akkor is volt más folyamat, de a legtöbbeknek nem volt szüksége köztes tárolóra.

Aki ismeri a GitHub-ot vagy más verziókezelő szolgáltatást, annak ez nem lesz teljesen új, mivel hasonlóan kell feltölteni a sablont (image), majd onnan letölteni azon a szerveren, amelyiken szükség van rá. Ha a hordozhatóság nem szempont, vagy hordozod a laptopoddal, akkor jó hír, hogy minden Docker telepítésével kapsz egy lokális registry-t is. Ugye ez is ismerős a Git-ből? Első lépésben viszont szükség lesz a Docker Hub-ra vagy Docker Store-ra, mivel a mások által elkészített sablonokat többnyire innen kell letölteni.

Egyetlen gépen érdemes kezdeni a munkát, legyen az szerver vagy akár saját PC. Letöltöd a szükséges image-eket, eleinte csak egyszerű, statikus weboldalakat elindítva. Ezután szépen lassan lehet haladni az összetettebbek felé, ahol már egy alkalmazás több konténerből áll. Nem ajánlott egyből egy bonyolult program konténerbe erőszakolásával kezdeni, mert igen nagy rá az esély, hogy kudarc lesz a vége. Fel kell ismerni, hogy hogyan működik a Docker, hogyan működik egy konténer. Amikor már alap feladatokat mások image-eivel megtudsz oldani, jöhetnek az egyedi konfigurációk saját szoftverrel.

Egy webszerver indítása pofon egyszerű. Egy webszerver indítása PHP-vel is lehet az, de ebben a fránya konténervilágban a korábbinál is jobban szeretjük szétválasztani külön konténerbe a komponenseket. Ezzel pedig meggyűlhet az ember baja, de ha tisztában vagy a HTTPD működésével, akkor egy viszonylag rövid konfigurációval könnyedén össze tudod kötni egy PHP FPM konténerrel. Főleg, ha találsz olyan image-et, ami direkt erre a célra készült. Véletlenül én pont írtam ilyent, amit be fogok mutatni hamarosan.

Azon túl, hogy a Docker mennyi mindenben segít, a Dockernek is szüksége lehet néha segítségre. Jobban mondva neked, ha minél több feladatot le akarsz venni a válladról. Tehát meg kell ismerni, milyen eszközök vannak és azokat mikor, miért érdemes alkalmazni.

Igazából már csak két dologgal kell tisztában lenni. Hogy hol fogod futtatni a Dockert és annak melyik verzióját. Mindenképp valamilyen linuxot javaslok, hogy a legtöbb funkció gyorsan és egyszerűen működjön. Ez lehet akár virtuális gép is, de akkor egy desktop verziót érdemes feltenni vagy a virtuális gépen a szükséges portokat elérhetővé kell tenni, de az ennek a cikksorozatnak nem lesz része. A már meglehetősen régi, és ezért kissé elavult, de azért még használható Hálózati beállítások VirtualBox 4.2-ben című cikkből lehet informálódni a témáról.

Tehát egy legalább 3.10-es kernellel rendelkező linuxon telepített Dockertől a registry-vel való ismerkedésen keresztül el fogunk jutni a webszerver konténer indításáig, majd a PHP FPM konténer webszerverrel való összepárosításával dinamikus weblapokat is fogunk futtatni adatbázissal. Mindeközben a Docker hálózatkezelésével is meg kell ismerkedni, de indulásnak egy egyszerű portátirányítás is megteszi a háttér információk nélkül. Végül akár fejlesztő vagy, akár rendszergazda, a saját image készítése hosszabb távon elkerülhetetlen. Egyszerűbb esetben ez csak az alkalmazásod felmásolását jelenti, bonyolultabb esetben komolyabb konfigurációt. Ezután pedig már bátrabban felülhetsz a kék bálna hátára, ahol változatos kalandokban lesz részed.

Kategóriák: 
Megosztás/Mentés