Magyarázatból sosem elég. Mindenki más szavakból és hasonlatokból ért. Nekem pedig eltökélt szándékom volt mindig, hogy érthetővé tegyem az érthetetlent. Most ismét a híres kék bálnát, a Dockert. Fontos, hiszen az informatikusnak sem mindig informatikust kell meggyőznie egy eszköz hasznosságáról és bevezetéséről. Volt már kikötőmunkás és buborék is, de most egy talán életközelibb szemszögből szeretném megközelíteni. Képzeljük el, hogy nem is kell tudni informatikusul és még csak túlzottan elvont képekben sem kell gondolkodni, csak megérteni a való világot. Annak egy olyan szeletét, amit azért legtöbben ismerünk, vagy egy részéről reméljük, csak hallottunk. Ezután már csak el kell hinni, hogy a Docker ezt jelenti az informatikusoknak. Most nem az a célom ezzel a cikkel, hogy szakmabelieket világosítsak fel, bár lehet, közülük is hasznosítani tudja valaki a következőket. Sokkal inkább szeretném olyan módon leegyszerűsíteni a témát, hogy csak minimális, ha nem nulla informatikai előismeret kelljen hozzá.
"Nem működik? Nálam jó volt..."
A Dockert egy olyan eszközként jellemezném az informatikában, ami segíti és megkönnyíti a fejlesztő és a rendszergazda dolgát is. A múltja régre nyúlik vissza, de az utóbbi években olyan népszerűvé vált, hogy konferenciákon és az interneten is állandó téma.
Talán többeknek ismerős lehet az az eset, amikor a fejlesztő elkészíti a programot, de aztán az nem működik. A fejlesztő pedig állítja, hogy nála működött. Ez azért van, mert minden programnak vannak bizonyos igényei, olyan körülmények, ami nélkül nem működik. Ezt a körülményt a rendszergazdának vagy a megrendelőnek kell megteremteni. Ehhez viszont a programozónak pontosan tudnia kell, mik ezek az igények és ezt közölnie kell a program átadásakor. Ez viszont nem mindig egyszerű. A Docker többek között az egyik olyan eszköz, ami segít ezt a problémát is megoldani.
Úgy oldja meg a problémát, hogy lehetőséget ad a programot összecsomagolni a hozzá szükséges körülményekkel. Ez hasonló a virtuális gépekhez, amikről többen hallhattak már és ami gyakorlatilag egy valódi, kézzelfogható gép szoftveres másolata, ami azt hazudja a programnak, hogy egy igazi gép.
A valóság a legjobb magyarázat
Az életből vett példákkal talán érthetőbb lesz, miről van szó.
Úgy kell elképzelni a virtuális gépet, mint egy nagy épületet. Legyen ez egy munkahely, ahol sokan dolgoznak vagy legalábbis úgy tesznek. Vannak, akik csak sétálgatnak, amíg egyszer valakinek szüksége lesz rájuk. Vannak olyanok, akik igazi munkát végeznek, de olyant, amit egy másik intézményben kellene végezni, másik cégnél. Tehát számomra nem végeznek hasznos munkát, így sokkal több ember után fizetem az erőforrásokat, mint amennyire szükségem lenne. Beleértve a helyet, a villanyt és a védőitalt. Ebben az épületben persze minden eszköz adott, hogy a dolgozók elvégezzék a munkájukat. Ha kerekeken gurulna az épület, még hordozhatnám is. Ez volt tehát a virtuális gép. Egy olyan lehetőség, ami sok felesleges program futását eredményezheti melléktermékként, bár saját, zárt, és ezért biztonságos játszóteret biztosít a benne levő programoknak.
Viszont szeretnék spórolni. Jobb lenne elküldeni azokat, akik számomra nem végeznek hasznos munkát. Így a többiek több erőforrást kaphatnak, kényelmesebben, hatékonyabban dolgozhatnak. Ez a Docker.
Mindenkinek ismerős lehet, amikor elindítja a számítógépét és olyan sok ikont, programot lát rajta, amik nagy részéről azt sem tudja, mire való. Vagy nincs szüksége felesleges díszítésekre, animációkra, az órára a sarokban. A felesleges programok leállításával pedig egy sokkal gyorsabb gépet kap.
Az előző példa a hatékonyságról és a spórolásról szólt. De a másik előnye ezeknek az eszközöknek a biztonságban rejlik. Ilyen értelemben a Docker a programok szigorú börtönőre, ami nem hagyja, hogy a cellákból kijussanak, a külvilággal kommunikáljanak és főként, hogy bárkinek és bárminek ártsanak. A Docker kifejezésével a cellát konténernek hívjuk. Jó kis sötét magánzárka.
Minden egyes rab külön cellában van, így egymással nem tudnak összeverekedni. Azaz minden program külön konténerben kap helyet, így nem árthatnak egymásnak. Előfordulhat viszont, hogy a raboknak dolgozniuk kell és ezért két cellában levő rabnak kommunikálnia kell egymással. Nem eresztjük össze őket, de biztosítunk olyan csatornát, amin beszélhetnek egymással vagy adatokat cserélhetnek. Például dokumentumokat.
Ahogy a való életben a raboknál, úgy a Dockerrel a programoknál is több lehetőség van ilyen kommunikációs csatornára. Tegyük fel, hogy ez egy modern börtön, ahol kerekeken, egy sínen mozgathatók a cellák. Egyes csatornák lehetetlenné teszik, hogy a cellákat egymástól eltávolítsuk. Például, ha egy kis ablakot nyitok a két cella között. Vagy egy közös fiókot, amit mindkét oldalon ki lehet húzni. Ráadásul ezek adott esetben nagyobb kockázatot is jelentenek. Más csatornák, mint a közvetlen telefonvonal, bárhova mozgathatóvá teszik a cellákat. Azaz a konténereket.
Tanulság
Általában az a cél, hogy sok olyan szép szót emlegethessünk, mint a rugalmasság, hatékonyság és biztonság. Hogy szabadságot adjunk a programoknak ironikus módon azok bebörtönzésével. Így viszont mindegyik megkaphatja, amire szüksége van és kidobhatunk a kukába mindent, ami csak útban van. Ráadásul a fejlesztők is nagyobb szabadságot kaphatnak ezzel. Az eredmény pedig sok esetben nagyobb rugalmasság, mint más alternatívák, például a virtuális gépek esetén.
Mindennek van árnyoldala, de az látszik, hogy így is nagyobb fény veszi körül ahhoz, hogy a népszerűsége tovább nőhessen. Nem egy egyedüli és univerzális eszközről van szó, de egy remek reklámarcról, ami jó belépőt nyújt a technológiába és nem mellesleg jól is használható.