{"id":31641,"date":"2019-10-31T21:42:19","date_gmt":"2019-10-31T18:42:19","guid":{"rendered":"https:\/\/prohoster.info\/blog\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da\/"},"modified":"2019-10-31T21:42:19","modified_gmt":"2019-10-31T18:42:19","slug":"docker-eto-igrushka-ili-net-ili-vsyo-taki-da","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da","title":{"rendered":"A Docker csak egy j\u00e1t\u00e9k, vagy nem? Vagy m\u00e9gis?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Mindenkinek szia!<\/p>\n<p><\/p>\n<p>Nagyon szeretn\u00e9m azonnal a t\u00e9m\u00e1hoz ugrani, de helyesebb lenne egy kicsit mes\u00e9lni a t\u00f6rt\u00e9netemr\u0151l:<\/p>\n<p><\/p>\n<h2>Bevezet\u00e9s<\/h2>\n<p><\/p>\n<p>Programoz\u00f3 vagyok, tapasztalattal egyoldal\u00fa alkalmaz\u00e1sok frontend fejleszt\u00e9s\u00e9ben, scala\/java \u00e9s nodejs haszn\u00e1lat\u00e1ban a szerveren. <\/p>\n<p><\/p>\n<p>El\u00e9g hossz\u00fa ideje (m\u00e1r biztosan p\u00e1r \u2014 h\u00e1rom \u00e9ve) azon a v\u00e9lem\u00e9nyen voltam, hogy a docker mennyei manna, \u00e9s egy\u00e9bk\u00e9nt is nagyon j\u00f3 eszk\u00f6z, \u00e9s minden programoz\u00f3nak tudnia kellene haszn\u00e1lni. Ebb\u0151l k\u00f6vetkezik, hogy minden programoz\u00f3nak dockernek kell lennie a helyi g\u00e9p\u00e9n. De ne is besz\u00e9ljek a v\u00e9lem\u00e9nyemr\u0151l, n\u00e9zz meg egy kicsit a hirdet\u00e9seket, amiket ugyanott tal\u00e1lsz a hh-n. Minden m\u00e1sodikban van egy eml\u00edt\u00e9s dockerrel kapcsolatban, \u00e9s ha rendelkezik vele \u2014 ez lesz a versenyel\u0151ny\u00f6d \ud83d\ude09<\/p>\n<p><\/p>\n<p>Az utam sor\u00e1n sok emberrel tal\u00e1lkoztam, akik k\u00fcl\u00f6nb\u00f6z\u0151 attit\u0171d\u00f6kkel \u00e1lltak a dockerhez \u00e9s annak \u00f6kosziszt\u00e9m\u00e1j\u00e1hoz. Egyesek azt mondt\u00e1k, hogy ez egy k\u00e9nyelmes dolog, amely garant\u00e1lja a platformf\u00fcggetlens\u00e9get. M\u00e1sok nem \u00e9rtett\u00e9k, mi\u00e9rt kellene nekik kont\u00e9nerekben futniuk, \u00e9s mi az el\u0151ny ebb\u0151l, harmadikakat pedig egy\u00e1ltal\u00e1n nem \u00e9rdekelt, \u0151k csak \u00edrt\u00e1k a k\u00f3dot \u00e9s hazamentek \u2014 am\u00fagy nekik irigylem ezt \ud83d\ude42<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Haszn\u00e1lat okai<\/h2>\n<p><\/p>\n<p>Mi\u00e9rt haszn\u00e1ltam a dockert? Val\u00f3sz\u00edn\u0171leg a k\u00f6vetkez\u0151 okok miatt:<\/p>\n<p><\/p>\n<ul>\n<li>adatb\u00e1zisok futtat\u00e1sa, a programok 99%-a haszn\u00e1lja \u0151ket<\/li>\n<li>nginx futtat\u00e1sa a frontend kiszolg\u00e1l\u00e1s\u00e1ra \u00e9s a backendre val\u00f3 proxyz\u00e1shoz<\/li>\n<li>az alkalmaz\u00e1som docker k\u00e9pk\u00e9nt val\u00f3 becsomagol\u00e1sa, \u00edgy az alkalmaz\u00e1som mindenhol m\u0171k\u00f6dni fog, ahol docker el\u00e9rhet\u0151, a disztrib\u00faci\u00f3s probl\u00e9ma m\u00e1r azonnal megold\u00f3dik<\/li>\n<li>be\u00e9p\u00edtett szolg\u00e1ltat\u00e1skeres\u00e9s, mikroservices k\u00e9sz\u00edt\u00e9se, minden kont\u00e9ner (a k\u00f6z\u00f6s h\u00e1l\u00f3zathoz csatlakozva) k\u00f6nnyen el\u00e9rheti a m\u00e1sikat aliason, nagyon k\u00e9nyelmes<\/li>\n<li>Vicces dolog kont\u00e9nert l\u00e9trehozni \u00e9s benne &#171;j\u00e1tszadozni&#187;.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Ami mindig NEM tetszett a dockerben:<\/h2>\n<p><\/p>\n<ul>\n<li>Ahhoz, hogy az alkalmaz\u00e1som m\u0171k\u00f6dj\u00f6n, mag\u00e1nak a dockernak kell lennie a szerveren. De minek, ha az alkalmaz\u00e1saim m\u00e1r jre-n vagy nodejs-en futnak, \u00e9s a k\u00f6rnyezet m\u00e1r l\u00e9tezik a szerveren?<\/li>\n<li>Ha szeretn\u00e9m futtatni a saj\u00e1t (priv\u00e1t) helyi gy\u0171jt\u00f6tt k\u00e9pet egy t\u00e1voli szerveren, akkor sz\u00fcks\u00e9gem van a saj\u00e1t docker t\u00e1rol\u00f3mra, valahol m\u0171k\u00f6dnie kell a registrynak, \u00e9s be kell \u00e1ll\u00edtani a https-et, mert a docker cli csak https-en m\u0171k\u00f6dik. Jaj, de\u2026 vannak persze lehet\u0151s\u00e9gek, p\u00e9ld\u00e1ul helyben elmenteni a k\u00e9pet <code>docker save<\/code> \u00e9s az scp-n kereszt\u00fcl egyszer\u0171en \u00e1tkonvert\u00e1lni a k\u00e9pet... De ez annyi j\u00e1rul\u00e9kos munka. R\u00e1ad\u00e1sul \u00edgy &#171;probl\u00e9m\u00e1s&#187; megold\u00e1snak t\u0171nik, am\u00edg nem jelenik meg a saj\u00e1t t\u00e1rol\u00f3nk.<\/li>\n<li><code>docker-compose<\/code>Csak a kont\u00e9nerek ind\u00edt\u00e1s\u00e1ra van sz\u00fcks\u00e9g. \u00c9s ennyi. M\u00e1sra nem k\u00e9pes. <code>Docker-compose<\/code> Sok verzi\u00f3ja van a f\u00e1jljainak, saj\u00e1t szintaxisa. B\u00e1rhogy is deklarat\u00edv, nem akarom olvasni a dokument\u00e1ci\u00f3jukat. Nem lesz r\u00e1 sz\u00fcks\u00e9gem m\u00e1shol.<\/li>\n<li>Csapatmunk\u00e1ban sokan nagyon hib\u00e1san \u00edrj\u00e1k a Dockerfile-t, nem \u00e9rtik, hogyan cache-eli, mindent, ami sz\u00fcks\u00e9ges \u00e9s sz\u00fcks\u00e9gtelen beraknak a k\u00e9pekbe, olyan k\u00e9pekb\u0151l \u00f6r\u00f6k\u00f6lnek, amelyek nincsenek a Docker Hubon vagy egy priv\u00e1t t\u00e1rol\u00f3ban, hogy k\u00fcl\u00f6nf\u00e9le <code>docker-compose<\/code> f\u00e1jlok adatb\u00e1zisokkal, \u00e9s semmi sem perziszt\u00e1l. Ek\u00f6zben a fejleszt\u0151k b\u00fcszk\u00e9n \u00e1ll\u00edtj\u00e1k, hogy a docker men\u0151, n\u00e1luk minden helyben m\u0171k\u00f6dik, \u00e9s az HR fontosnak tartja \u00edrni a hirdet\u00e9sekben: &#171;Haszn\u00e1lunk dockert, \u00e9s sz\u00fcks\u00e9g\u00fcnk van jel\u00f6ltekre ezzel a tapasztalattal&#187;.<\/li>\n<li>\u00e1lland\u00f3an az a gondolat k\u00eds\u00e9rt, hogy minden \u00e9s b\u00e1rmi a Dockerben fusson: PostgreSQL, Kafka, Redis. K\u00e1r, hogy nem minden m\u0171k\u00f6dik kont\u00e9nerekben, nem mindent k\u00f6nny\u0171 konfigur\u00e1lni \u00e9s elind\u00edtani. Ezt harmadik f\u00e9l fejleszt\u0151k t\u00e1mogatj\u00e1k, nem maguk a gy\u00e1rt\u00f3k. \u00c9s egy\u00e9bk\u00e9nt r\u00f6gt\u00f6n felmer\u00fcl a k\u00e9rd\u00e9s, hogy ha a gy\u00e1rt\u00f3k nem agg\u00f3dnak a term\u00e9keik Dockerben val\u00f3 t\u00e1mogat\u00e1sa miatt, tal\u00e1n tudnak valamit?<\/li>\n<li>mindig felmer\u00fcl a k\u00e9rd\u00e9s a kont\u00e9ner adatok tart\u00f3ss\u00e1g\u00e1r\u00f3l. \u00c9s itt azon gondolkodom, hogy egyszer\u0171en mount-oljam a gazdadatk\u00f6nyvt\u00e1rat vagy hozzak l\u00e9tre egy Docker volume-ot, vagy csin\u00e1ljak egy data container-t, ami most <code>deprecated<\/code>? \u0415\u0441\u043b\u0438 \u044f \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0442\u043e \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0447\u0442\u043e uid \u0438 gid \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 id \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432\u0448\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0438\u043d\u0430\u0447\u0435 \u0444\u0430\u0439\u043b\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 root. \u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <code>volume<\/code> ez\u00e9rt az adatok valahol l\u00e9trej\u00f6nnek <code>\/usr\/*<\/code> \u00e9s ugyanaz a t\u00f6rt\u00e9net a uid \u00e9s gid, mint az els\u0151 esetben. Ha harmadik f\u00e9lt\u0151l sz\u00e1rmaz\u00f3 komponenst ind\u00edtasz, akkor bele kell n\u00e9zned a dokument\u00e1ci\u00f3ba \u00e9s keresni a v\u00e1laszt arra a k\u00e9rd\u00e9sre: &#171;milyen k\u00f6nyvt\u00e1rakba \u00edr f\u00e1jlokat a kont\u00e9nerben a komponens?&#187;<\/li>\n<\/ul>\n<p>Mindig is zavart, hogy t\u00fal sok\u00e1ig kell vacakolnom a Dockerrel. <strong>a kezdeti szakaszban<\/strong>: kital\u00e1ltam, hogyan ind\u00edtsam a kont\u00e9nereket, milyen k\u00e9pekb\u0151l ind\u00edtsak, k\u00e9sz\u00edtettem Makefile-t, amelyek hossz\u00fa Docker parancsok aliasait tartalmazt\u00e1k. Ki nem \u00e1llhattam a Docker Compose-t, mert nem akartam m\u00e9g egy eszk\u00f6zt tanulni a Docker \u00f6kosziszt\u00e9m\u00e1ban. \u00c9s <code>docker-compose up<\/code> k\u00fcl\u00f6n\u00f6sen zavart, ha m\u00e9g ott is tal\u00e1lkoztam <code>build<\/code> konstrukci\u00f3kkal, nem pedig m\u00e1r el\u0151re elk\u00e9sz\u00edtett k\u00e9pekkel. Amit t\u00e9nyleg akartam \u2013 hogy hat\u00e9konyan \u00e9s gyorsan k\u00e9sz\u00edtsem el a term\u00e9ket. De sehogy sem tudtam rendszerezni a Docker haszn\u00e1lat\u00e1t.<\/p>\n<p><\/p>\n<h2>Ismerked\u00e9s az Ansible-lal<\/h2>\n<p><\/p>\n<p>Nemr\u00e9g (h\u00e1rom h\u00f3nappal ezel\u0151tt) dolgoztam egy DevOps csapattal, amelynek szinte minden tagja negat\u00edvan viszonyult a Dockerhez. Az okai:<\/p>\n<p><\/p>\n<ul>\n<li>A Docker ir\u00e1ny\u00edtja az iptables-t (b\u00e1r a daemon.json-ban le lehet tiltani)<\/li>\n<li>A Docker nem stabil, \u00e9s nem fogjuk \u00e9les k\u00f6rnyezetben futtatni<\/li>\n<li>Ha a Docker daemon \u00f6sszeomlik, akkor az \u00f6sszes infrastrukt\u00far\u00e1val rendelkez\u0151 kont\u00e9ner is \u00f6sszeomlik<\/li>\n<li>A Docker haszn\u00e1lata nem sz\u00fcks\u00e9ges<\/li>\n<li>Mi\u00e9rt a Docker, ha ott van az Ansible \u00e9s a virtu\u00e1lis g\u00e9pek?<\/li>\n<\/ul>\n<p><\/p>\n<p>Ugyanezen a munkahelyen ismerkedtem meg egy m\u00e1sik eszk\u00f6zzel - az Ansible-lal. Valamikor hallottam r\u00f3la, de nem pr\u00f3b\u00e1ltam ki a saj\u00e1t playbookjaimat. Most viszont elkezdtem \u00edrni a feladataimat, \u00e9s itt a l\u00e1t\u00e1som v\u00e9gleg megv\u00e1ltozott! Mert r\u00e1j\u00f6ttem, hogy az Ansible-nek vannak moduljai a Docker kont\u00e9nerek futtat\u00e1s\u00e1ra, a k\u00e9pek \u00f6ssze\u00e1ll\u00edt\u00e1s\u00e1ra, a h\u00e1l\u00f3zatok kezel\u00e9s\u00e9re stb., r\u00e1ad\u00e1sul a kont\u00e9nereket nemcsak helyben, hanem t\u00e1voli szervereken is futtathatjuk! A lelkesed\u00e9sem hat\u00e1rtalan volt - megtal\u00e1ltam a NORM\u00c1LIS eszk\u00f6zt, \u00e9s kidobtam a Makefile-jaimat \u00e9s a docker-compose f\u00e1jljaimat, helyett\u00fck yaml feladatok lettek. A k\u00f3d cs\u00f6kkent az ilyen szerkezetek haszn\u00e1lat\u00e1val <code>loop<\/code>, <code>when<\/code>, stb.<\/p>\n<p><\/p>\n<h2>A Docker k\u00fcls\u0151 komponensek, p\u00e9ld\u00e1ul adatb\u00e1zisok futtat\u00e1s\u00e1ra szolg\u00e1l<\/h2>\n<p><\/p>\n<p>Nemr\u00e9giben megismertem az ssh alagutakat. Kider\u00fclt, hogy nagyon egyszer\u0171 &#171;\u00e1tir\u00e1ny\u00edtani&#187; a t\u00e1voli szerver portj\u00e1t a helyi portra. A t\u00e1voli szerver lehet felh\u0151ben m\u0171k\u00f6d\u0151 g\u00e9p vagy egy VirtualBox-ban fut\u00f3 virtu\u00e1lis g\u00e9p. Ha nekem vagy a koll\u00e9g\u00e1mnak sz\u00fcks\u00e9ge van egy adatb\u00e1zisra (vagy b\u00e1rmilyen m\u00e1s k\u00fcls\u0151 komponensre), egyszer\u0171en elind\u00edthatjuk a szervert a komponenssel, \u00e9s le\u00e1ll\u00edthatjuk, amikor m\u00e1r nincs sz\u00fcks\u00e9g a szerverre. A portok \u00e1tir\u00e1ny\u00edt\u00e1sa ugyanazt az effektust adja, mint amikor az adatb\u00e1zis docker kont\u00e9nerben fut.<\/p>\n<p><\/p>\n<p>Ez a parancs ir\u00e1ny\u00edtja \u00e1t a helyi portomat egy t\u00e1voli PostgreSQL szerverre:<\/p>\n<p><\/p>\n<blockquote><p>ssh -L 9000:localhost:5432 user@example.com<\/p><\/blockquote>\n<p>Egy t\u00e1voli szerver haszn\u00e1lata megoldja a csapatban v\u00e9gzett fejleszt\u00e9s probl\u00e9m\u00e1j\u00e1t. Ilyen szervert t\u00f6bb fejleszt\u0151 is haszn\u00e1lhat egyszerre, nekik nem kell tudniuk be\u00e1ll\u00edtani a PostgreSQL-t, \u00e9rteni a Dockert \u00e9s egy\u00e9b kifinomults\u00e1gokat. A t\u00e1voli szerveren ugyanazt az adatb\u00e1zist telep\u00edthetj\u00fck a Dockerbe, ha egy speci\u00e1lis verzi\u00f3 telep\u00edt\u00e9se neh\u00e9zkes. A fejleszt\u0151knek csak SSH hozz\u00e1f\u00e9r\u00e9st kell biztos\u00edtani!<\/p>\n<p><\/p>\n<p>Nemr\u00e9g olvastam, hogy az SSH alagutak a hagyom\u00e1nyos VPN korl\u00e1tozott funkcionalit\u00e1sa! Egyszer\u0171en be\u00e1ll\u00edthatunk OpenVPN-t vagy m\u00e1s VPN megval\u00f3s\u00edt\u00e1sokat, be\u00e1ll\u00edtjuk az infrastrukt\u00far\u00e1t, \u00e9s \u00e1tadjuk a fejleszt\u0151knek. Ez t\u00e9nyleg nagyon men\u0151!<\/p>\n<p><\/p>\n<p>Szerencs\u00e9re az AWS, GoogleCloud \u00e9s hasonl\u00f3k egy \u00e9v ingyenes haszn\u00e1latot k\u00edn\u00e1lnak, \u00e9rdemes ezeket kihaszn\u00e1lni! Ha nem haszn\u00e1ljuk \u0151ket, nagyon olcs\u00f3k. Mindig is gondolkodtam, hogy mire lenne sz\u00fcks\u00e9gem egy t\u00e1voli szerver t\u00edp\u00fas\u00fa gcloud-ra, \u00fagy t\u0171nik, most megtal\u00e1ltam \u0151ket.<\/p>\n<p><\/p>\n<p>Helyi virtu\u00e1lis g\u00e9pk\u00e9nt ugyanazt az Alpine-t haszn\u00e1lhatod, amelyet akt\u00edvan haszn\u00e1lnak a docker kont\u00e9nerekben. Vagy v\u00e1laszthatsz m\u00e1s k\u00f6nny\u00edtett disztrib\u00faci\u00f3kat is, hogy gyorsabban bet\u00f6lt\u0151dhessen a g\u00e9p.<\/p>\n<p><\/p>\n<p>\u00d6sszegz\u00e9s: az adatb\u00e1zisok \u00e9s egy\u00e9b infrastrukt\u00fara elemek futtat\u00e1sa t\u00e1voli szervereken vagy virtualboxban is lehets\u00e9ges \u00e9s aj\u00e1nlott. Nem sz\u00fcks\u00e9ges docker ezekhez a c\u00e9lokhoz.<\/p>\n<p><\/p>\n<h2>Egy kis inform\u00e1ci\u00f3 a docker k\u00e9pekr\u0151l \u00e9s disztrib\u00faci\u00f3kr\u00f3l.<\/h2>\n<p><\/p>\n<p>M\u00e1r \u00edrtam. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/443136\/\">cikket<\/a><\/noindex> amelyben szerettem volna kifejezni, hogy a docker k\u00e9pek haszn\u00e1lata nem ny\u00fajt semmilyen garanci\u00e1t. A docker k\u00e9pek csak arra szolg\u00e1lnak, hogy l\u00e9trehozzanak egy docker kont\u00e9nert. Ha egy docker k\u00e9pre t\u00e1maszkodsz, akkor a docker kont\u00e9nerek haszn\u00e1lat\u00e1ra is t\u00e1maszkodsz, \u00e9s csak azokkal fogsz dolgozni.<\/p>\n<p><\/p>\n<p>L\u00e1tt\u00e1l m\u00e1r valahol olyan szoftverfejleszt\u0151ket, akik csak docker k\u00e9pbe portolt\u00e1k a term\u00e9keiket?<br \/>\nA legt\u00f6bb term\u00e9k eredm\u00e9nye a bin\u00e1ris f\u00e1jlok egy adott platformhoz. Ezeket egyszer\u0171en hozz\u00e1adj\u00e1k a docker k\u00e9phez, amely a sz\u00fcks\u00e9ges platformb\u00f3l sz\u00e1rmazik. Elgondolkodt\u00e1l m\u00e1r azon, mi\u00e9rt van annyi hasonl\u00f3 k\u00e9p a dockerhub-on? \u00cdrd be p\u00e9ld\u00e1ul az nginx-et, \u00e9s l\u00e1thatod a rengeteg k\u00e9pet k\u00fcl\u00f6nb\u00f6z\u0151 emberekt\u0151l. Ezek az emberek nem fejlesztett\u00e9k mag\u00e1t az nginx-et, egyszer\u0171en a saj\u00e1t docker k\u00e9p\u00fckbe beletett\u00e9k az hivatalos nginx-t, \u00e9s saj\u00e1t konfigur\u00e1ci\u00f3ikkal t\u00e1lalt\u00e1k a kont\u00e9nerek ind\u00edt\u00e1s\u00e1t. <\/p>\n<p><\/p>\n<p>\u00d6sszess\u00e9g\u00e9ben t\u00e1rolhatod egyszer\u0171en tgz form\u00e1tumban, ha valakinek sz\u00fcks\u00e9ge van erre dockerben val\u00f3 ind\u00edt\u00e1shoz, akkor adja hozz\u00e1 a tgz-t a Dockerfile-hoz, \u00f6r\u00f6kl\u0151dj\u00f6n a sz\u00fcks\u00e9ges k\u00f6rnyezett\u0151l, \u00e9s hozzon l\u00e9tre tov\u00e1bbi elemeket, amelyek nem m\u00f3dos\u00edtj\u00e1k mag\u00e1t az alkalmaz\u00e1st a tgz-ben. Annak, aki docker k\u00e9pet fog k\u00e9sz\u00edteni, tudnia kell, mi az a tgz \u00e9s mire van sz\u00fcks\u00e9ge a m\u0171k\u00f6d\u00e9shez. \u00c9ppen \u00edgy haszn\u00e1lom a dockert. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kondaurovDev\/dockerfile\">itt<\/a><\/noindex><\/p>\n<p><\/p>\n<p>\u00d6sszegz\u00e9s: nekem nincs sz\u00fcks\u00e9gem docker registry-re, ink\u00e1bb valamilyen S3-at vagy egyszer\u0171en f\u00e1jl t\u00e1rol\u00f3t haszn\u00e1lok, mint a google drive\/dropbox.<\/p>\n<p><\/p>\n<h2>Docker a CI-ben<\/h2>\n<p><\/p>\n<p>Minden c\u00e9g, ahol dolgoztam, hasonl\u00edt egym\u00e1sra. Jellemz\u0151en term\u00e9kc\u00e9gek. Vagyis van egy alkalmaz\u00e1suk, egy technol\u00f3giai stack-j\u00fck (tal\u00e1n n\u00e9h\u00e1ny programoz\u00e1si nyelv p\u00e1rban - h\u00e1rmas\u00e1val).<\/p>\n<p><\/p>\n<p>Ezek a c\u00e9gek docker-t haszn\u00e1lnak a szervereiken, ahol a CI folyamat zajlik. K\u00e9rd\u00e9s \u2014 mi\u00e9rt sz\u00fcks\u00e9ges projekteket docker kont\u00e9nerben \u00e9p\u00edteni a saj\u00e1t szervereinken? Mi\u00e9rt ne k\u00e9sz\u00edten\u00e9nk el\u0151 egy k\u00f6rnyezetet az \u00e9p\u00edt\u00e9shez, p\u00e9ld\u00e1ul \u00edrhatn\u00e1nk egy Ansible playbookot, amely a sz\u00fcks\u00e9ges nodejs, php, jdk verzi\u00f3kat telep\u00edti, m\u00e1solja az ssh kulcsokat stb. arra a szerverre, ahol az \u00e9p\u00edt\u00e9s zajlik? <\/p>\n<p><\/p>\n<p>Most m\u00e1r \u00e9rtem, hogy ez saj\u00e1t l\u00e1bmetsz\u00e9s, mert a docker nem hoz semmilyen el\u0151nyt az izol\u00e1ci\u00f3j\u00e1val. CI probl\u00e9m\u00e1k a dockern\u00e9l, amelyekkel szembes\u00fcltem:<\/p>\n<p><\/p>\n<ul>\n<li>\u00fajra sz\u00fcks\u00e9ges a docker k\u00e9p az \u00e9p\u00edt\u00e9shez. Keresni kell a k\u00e9pet vagy \u00edrni a saj\u00e1t dockerfile-unkat.<\/li>\n<li>90%, hogy valamilyen ssh kulcsot, titkos adatokat kell \u00e1tadni, amelyeket nem akarok bele\u00edrni a docker k\u00e9pbe.<\/li>\n<li>a kont\u00e9ner l\u00e9trej\u00f6n \u00e9s meghal, minden cache elveszik vele. A k\u00f6vetkez\u0151 \u00e9p\u00edt\u00e9s \u00fajra le fogja t\u00f6lteni a projekt \u00f6sszes f\u00fcgg\u0151s\u00e9g\u00e9t, ami lass\u00fa \u00e9s hat\u00e1stalan, \u00e9s az id\u0151 \u2014 p\u00e9nz.<\/li>\n<\/ul>\n<p><\/p>\n<p>A fejleszt\u0151k nem \u00e9p\u00edtenek projekteket docker kont\u00e9nerben (r\u00e9gen \u00e9n is ilyen rajong\u00f3 voltam, k\u00e1r \u00e9rtem a m\u00faltban xD). A java lehet\u0151s\u00e9get ad arra, hogy t\u00f6bb verzi\u00f3t tartsunk, \u00e9s egy parancssal v\u00e1ltoztassunk arra, amelyik most sz\u00fcks\u00e9ges. A nodejs hasonl\u00f3, van nvm.<\/p>\n<p><\/p>\n<h2>K\u00f6vetkeztet\u00e9s<\/h2>\n<p><\/p>\n<p>\u00dagy gondolom, hogy a docker egy nagyon er\u0151teljes \u00e9s rugalmas eszk\u00f6z, \u00e9s ez a h\u00e1tr\u00e1nya (ez furcs\u00e1n hangzik, ugye). Ezzel a c\u00e9gek k\u00f6nnyen &#171;r\u00e1k\u00e9nyszer\u00fclnek&#187;, haszn\u00e1lj\u00e1k, ahol csak kell, \u00e9s ahol nem. A fejleszt\u0151k elind\u00edtj\u00e1k a kont\u00e9nereiket, valamilyen saj\u00e1t k\u00f6rnyezet\u00fcket, majd mindez fokozatosan \u00e1tker\u00fcl a CI-be \u00e9s a termel\u00e9sbe. A DevOps csapat k\u00fcl\u00f6nb\u00f6z\u0151 megold\u00e1sokat \u00edr, hogy elind\u00edtsa ezeket a kont\u00e9nereket.<\/p>\n<p><\/p>\n<p>Csak a <strong>legutols\u00f3<\/strong> l\u00e9pcs\u0151fokon haszn\u00e1lja a dockert a munkafolyamat\u00e1ban, ne cipelje a projektbe az elej\u00e9n. Nem fogja megoldani az \u00fczleti probl\u00e9m\u00e1it. Csak \u00e1thelyezi a probl\u00e9m\u00e1kat EGY M\u00c1S szintre, \u00e9s a saj\u00e1t megold\u00e1si javaslatait fogja felk\u00edn\u00e1lni, \u00d6n pedig dupla munk\u00e1t fog v\u00e9gezni.<\/p>\n<p><\/p>\n<p><strong><em>Mikor van sz\u00fcks\u00e9g a dockerre?<\/em><\/strong>: arra a meg\u00e1llap\u00edt\u00e1sra jutottam, hogy a docker nagyon j\u00f3 a megval\u00f3s\u00edtott folyamat optimaliz\u00e1l\u00e1s\u00e1ban, de nem az alapfunkci\u00f3k fel\u00e9p\u00edt\u00e9s\u00e9ben.<\/p>\n<p><\/p>\n<p>Ha m\u00e9gis \u00fagy d\u00f6nt, hogy haszn\u00e1lja a dockert, akkor:<\/p>\n<p><\/p>\n<ul>\n<li>legyen nagyon \u00f3vatos<\/li>\n<li>ne k\u00e9nyszer\u00edtse a docker haszn\u00e1lat\u00e1t a fejleszt\u0151kre<\/li>\n<li>korl\u00e1tozza annak haszn\u00e1lat\u00e1t egy helyen, ne sz\u00f3rja sz\u00e9t a Dockerfile-t \u00e9s a docker-compose-t az \u00f6sszes adatt\u00e1rban.<\/li>\n<\/ul>\n<p><\/p>\n<p>PS:<\/p>\n<p><\/p>\n<ul>\n<li>Nemr\u00e9giben tal\u00e1lkoztam a <noindex><a rel=\"nofollow\" href=\"https:\/\/www.packer.io\/\">packer-rel.<\/a><\/noindex> Azt mondj\u00e1k, hogy nagyon j\u00f3l m\u0171k\u00f6dik az Ansible-lel, \u00e9s lehet\u0151v\u00e9 teszi a k\u00e9pm\u00e1sk\u00e1k (bele\u00e9rtve a docker image-t is) el\u0151\u00e1ll\u00edt\u00e1s\u00e1nak folyamat\u00e1nak egys\u00e9ges\u00edt\u00e9s\u00e9t.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.smashcompany.com\/technology\/docker-is-a-dangerous-gamble-which-we-will-regret\">Szint\u00e9n a dokkr\u00f3l, \u00e9rdekes cikk.<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>K\u00f6sz\u00f6n\u00f6m, hogy elolvastad, k\u00edv\u00e1nok neked \u00e1tl\u00e1that\u00f3 megold\u00e1sokat az \u00fcgyeidben \u00e9s produkt\u00edv munkanapokat!<\/p>\n<p>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/445914\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041e\u043e\u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0442\u0435\u043c\u0435, \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043c\u043e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u042f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 frontend \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, scala\/java \u0438 nodejs \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0433\u043e (\u0443\u0436\u0435 \u0442\u043e\u0447\u043d\u043e \u043f\u0430\u0440\u0443 \u2014 \u0442\u0440\u043e\u0439\u043a\u0443 \u043b\u0435\u0442), \u044f \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0441\u044f \u043c\u043d\u0435\u043d\u0438\u044f, \u0447\u0442\u043e docker \u044d\u0442\u043e \u043c\u0430\u043d\u043d\u0430 \u043d\u0435\u0431\u0435\u0441\u043d\u0430\u044f \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0443\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0438 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-31641","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041e\u043e\u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0442\u0435\u043c\u0435, \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043c\u043e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u042f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 frontend.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Docker \u2014 \u044d\u0442\u043e \u0438\u0433\u0440\u0443\u0448\u043a\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442? \u0418\u043b\u0438 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0434\u0430? | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041e\u043e\u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0442\u0435\u043c\u0435, \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043c\u043e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u042f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 frontend.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:42:19+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:42:19+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47A Docker j\u00e1t\u00e9k vagy sem? Vagy m\u00e9gis az?","description":"Mindenkinek \u00fcdv\u00f6zlet! Nagyon szeretn\u00e9k azonnal a t\u00e9m\u00e1ra t\u00e9rni, de helyesebb lenne egy kicsit mes\u00e9lni a t\u00f6rt\u00e9netemr\u0151l: Bevezet\u00e9s Programoz\u00f3 vagyok, front-end fejleszt\u00e9si tapasztalattal.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Docker \u2014 \u044d\u0442\u043e \u0438\u0433\u0440\u0443\u0448\u043a\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442? \u0418\u043b\u0438 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0434\u0430? | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041e\u043e\u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0442\u0435\u043c\u0435, \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043c\u043e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u042f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 frontend.","og:url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:42:19+00:00","article:modified_time":"2019-10-31T18:42:19+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31641","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 07:08:22","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:13:28","updated":"2026-01-21 07:08:22","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/31641","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=31641"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/31641\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=31641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=31641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=31641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}