Aplikačný kontajner je samostatný balík softvéru, ktorý obsahuje všetko potrebné k svojmu behu. Je možné ho jednoducho spustiť v akomkoľvek kompatibilnom prostredí bez nutnosti zložitej inštalácie. Po spustení beží kontajner vo vlastnom priestore, vyhradenom hosťujúcim operačným systémom. Má vlastné sieťové rozhranie (IP adresu) a vlastný file systém. Najznámejšia platforma aplikačných kontajnerov je Docker.
Technológia spúšťania aplikačných kontajnerov je veľmi podobná napríklad projektu OpenVZ, dokonca sa dá prirovnať k virtuálnemu serveru, no jej využitie je v tomto prípade odlišné.
V kontajneri by mal bežať len jeden proces. Napríklad pri PHP aplikácii, by sme v jednom kontajneri spustili PHP-FPM a v druhom nginx, ktorý sa na PHP bude pripájať cez TCP port. Aplikácia komunikuje s okolitým svetom cez TCP (alebo UDP). Kontajner má vypublikované porty, na ktorých reaguje buď na spojenia z Internetu alebo z iných kontajnerov. Viditeľnosť vybraných portov zvonku zabezpečuje hostiteľský operačný systém, napríklad cez reverse proxy alebo NAT.
Aplikácia by mala byť konfigurovateľná cez premenné prostredia, napríklad adresu a prihlasovacie údaje databázy, ktoré je ľahké nastaviť pri spúšťaní kontajneru. Ďalej by mala logovať na štandardný alebo chybový výstup (stdout, stderr), o správu týchto výstupov by sa mal starať hostiteľský systém.
Aplikácia by nemala používať file system na ukladanie perzistentných dát. Ideálne použiť rôzne druhy databáz (SQL, redis a pod.), alebo S3 na ukladanie napríklad uploadovaných súborov. Z tohoto pravidla sa však často robia výnimky, preto v prípade potreby vieme do kontajnera pripojiť volume zo zdieľaného úložiska.
Aplikačný kontajner jednoducho spustím na akomkoľvek prostredí bez potreby inštalácie. Napríklad pre docker kontajnery, stačí mať na serveri nainštalovaný docker a viem spustiť akýkoľvek kontajner. Čiže vývojár si môže na svojom notebooku pod dockerom spúšťať a ladiť aplikačný kontajner, ktorý potom len uploaduje do repozitára a môže sa nasadiť do testovacieho prostredia, či do produkcie bez potreby ďalších úprav. Ušetrí to kopec problémov typu “ale u mňa to funguje dobre”.
Pokiaľ ešte nevyužívate výhody kontajnerov pri vývoji aplikácie, vieme vám pripraviť prostredie na vybudovanie kontajnerov z vašej klasickej aplikácie.