{"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\/et\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da","title":{"rendered":"Kas Docker on m\u00e4nguasi v\u00f5i mitte? V\u00f5i siiski on?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Tere k\u00f5igile!<\/p>\n<p><\/p>\n<p>Tahaks ma kohe teemast alustada, kuid oleks parem r\u00e4\u00e4kida natuke oma ajaloost:<\/p>\n<p><\/p>\n<h2>Sissejuhatus<\/h2>\n<p><\/p>\n<p>Ma olen arendaja, kellel on kogemusi frontend \u00fche lehe rakenduste, scala\/java ja nodejs arendamisel serveris. <\/p>\n<p><\/p>\n<p>Pikka aega (kindlasti paar-kolm aastat) hoidsin ma arvamust, et docker on taevane kingitus ja t\u00f5eliselt \u00e4ge t\u00f6\u00f6riist ning iga arendaja peaks oskama sellega t\u00f6\u00f6tada. Seega on igal arendajal ka docker oma kohalikul masinal olemas. Mis seal salata, kui vaadata t\u00f6\u00f6kuulutusi, mis on postitatud n\u00e4iteks hh. Igas teises on mainitud dockerit ja kui sul on sellest teadlikkus \u2014 on see sinu konkurentsieelis \ud83d\ude09<\/p>\n<p><\/p>\n<p>Oma teekonna jooksul olen kohtunud paljude inimestega, kelle suhtumine dockerisse ja selle \u00f6kos\u00fcsteemi on olnud erinev. \u00dched \u00fctlesid, et see on mugav asi, mis tagab platvormide \u00fchilduvuse. Teised ei saanud aru, miks nad peaksid konteinerites k\u00e4ivitama ja mis kasu sellest on, kolmandatele ei olnud see \u00fcldse oluline ja nad ei muretsenud (lihtsalt kirjutasid koodi ja l\u00e4ksid koju \u2014 kadedan neid, muide \ud83d\ude42)<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Kasutamise p\u00f5hjused<\/h2>\n<p><\/p>\n<p>Miks ma dockerit kasutasin? Ilmselt j\u00e4rgmiste p\u00f5hjuste t\u00f5ttu:<\/p>\n<p><\/p>\n<ul>\n<li>andmebaasi k\u00e4ivitamiseks, 99% rakendustest kasutavad neid<\/li>\n<li>nginx'i k\u00e4ivitamiseks frontend'i jagamiseks ja backend'i proxy'ks<\/li>\n<li>rakendust saab pakendada docker'i pildiks, seega t\u00f6\u00f6tab mu rakendus igal pool, kus on docker, ja jaotamise probleem on kohe lahendatud<\/li>\n<li>teenuste avastamine pakub kohe, saab teha mikroteenuseid, iga konteiner (\u00fchendatud \u00fchisse v\u00f5rku) saab h\u00f5lpsasti teisele ligi minna alias'e kaudu, see on v\u00e4ga mugav<\/li>\n<li>Lahe, et luua konteiner ja \"m\u00e4ngida\" sellega.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Mis mulle on alati DOHINUD dockeris:<\/h2>\n<p><\/p>\n<ul>\n<li>kui mu rakendus t\u00f6\u00f6tab, on serveris ikka docker vajalik. Ja miks mul seda tarvis on, kui mu rakendused t\u00f6\u00f6tavad jre v\u00f5i nodejs peal ja keskkond nende jaoks on serveris juba olemas?<\/li>\n<li>kui ma tahan k\u00e4ivitada oma (privaatset) kohalikult kokku pandud pilti eemaldatud serveris, siis vajab ma oma docker'i registrit, kuskil peab registry t\u00f6\u00f6tama ja veel peab seadistama https, sest docker cli t\u00f6\u00f6tab ainult https. Oh, jumal\u2026 on muidugi v\u00f5imalusi, kuidas pilt kohaliku peale salvestada ja <code>docker save<\/code> ja over scp lihtsalt visata pilt... Kuid see on nii palju liikumisi. Ja see tundub ka \"kruvi\" lahenduse, kuni muudavad oma repot.<\/li>\n<li><code>version: '1'\n    services:\n        simplesample-sonar:\n            image: sonarqube:lts\n            ports:\n                - 9001:9000\n                - 9092:9092\n            network_mode: bridge<\/code>See on vajalik ainult konteinerite k\u00e4ivitamiseks. Ja k\u00f5ik. Rohkem ta ei suuda. <code>Docker-compose<\/code> omab palju oma failide versioone, oma s\u00fcntaksit. Kui deklareeriv ta ka pole, ei taha ma nende dokumentatsiooni lugeda. See ei ole mulle kuskil mujal vajalik.<\/li>\n<li>meeskonnas t\u00f6\u00f6tades kirjutavad enamus inimesi Dockerfile'i v\u00e4ga valesti, ei m\u00f5ista, kuidas see vahem\u00e4lu t\u00f6\u00f6tab, lisavad pildile k\u00f5ike, mis vajalik ja mittevajalik, p\u00e4rivad pildilt, mida ei ole dockerhub'is v\u00f5i privaatsetes registrites, loovad mingisuguseid <code>version: '1'\n    services:\n        simplesample-sonar:\n            image: sonarqube:lts\n            ports:\n                - 9001:9000\n                - 9092:9092\n            network_mode: bridge<\/code> failid andmebaasidest ja miski ei p\u00fcsiv. Samal ajal kuulutavad arendajad uhkelt, et docker on \u00e4ge, k\u00f5ik t\u00f6\u00f6tab neil kohapeal ja HR kirjutab t\u00f6\u00f6kuulutustesse: \"Kasutame dockerit ja vajad me sellise kogemusega kandidaati\".<\/li>\n<li>m\u00f5tted dolooride t\u00f5stmisest dockerisse pidevalt kummitavad: postgresql, kafka, redis. Kahju, et mitte k\u00f5ik ei t\u00f6\u00f6ta konteinerites, mitte k\u00f5iki on lihtne konfigureerida ja k\u00e4ivitada. Toetavad seda kolmandate osapoolte arendajad, mitte tootjad ise. Ja muide, tekib kohe k\u00fcsimus, miks tootjad ei pea vajalikuks oma tooteid dockeris hooldada, v\u00f5ib-olla nad teavad midagi?<\/li>\n<li>tekib pidevalt k\u00fcsimus konteineri andmete p\u00fcsivuse kohta. Ja siis m\u00f5tled, kas peaks lihtsalt hostikausta mountima v\u00f5i loodud docker volume'i v\u00f5i tegema data containeri, mis n\u00fc\u00fcd <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> andmed luuakse lihtsalt kuhugi <code>\/usr\/*<\/code> ja uid ja gid on sama lugu nagu esimeses reas. Kui k\u00e4ivitate kolmanda osapoole komponendi, peate dokumentatsiooni hoolikalt lugema ja otsima vastust k\u00fcsimusele: \"millistesse kaustadesse konteineris komponent faile kirjutab?\"<\/li>\n<\/ul>\n<p>Mulle on alati h\u00e4irinud, et tuleb dockeriga liiga kaua vaeva n\u00e4ha <strong>alguses<\/strong>: m\u00f5tlesin, kuidas k\u00e4ivitada konteinerit, millistest piltidest alustada, tegin Makefile'e, mis sisaldas aliaseid pikkadele docker k\u00e4skudele. Ei suutnud docker-compose'i taluda, sest ei soovinud \u00f5ppida veel \u00fchte docker \u00f6kos\u00fcsteemi t\u00f6\u00f6riista. Ja <code>docker-compose up<\/code> mind h\u00e4iris see, eriti kui seal olid veel <code>build<\/code> struktuurid, mitte juba kokku pandud pildid. K\u00f5ike, mida ma tegelikult tahtsin, oli lihtsalt toote t\u00f5hus ja kiire valmistamine. Kuid ma ei suutnud kuidagi dockerit \u00f5igesti kasutada.<\/p>\n<p><\/p>\n<h2>Tutvumine Ansible'iga<\/h2>\n<p><\/p>\n<p>Hiljuti (kolm kuud tagasi) t\u00f6\u00f6tasin DevOps meeskonnas, kelle iga liige suhtus dockerisse negatiivselt. P\u00f5hjustel:<\/p>\n<p><\/p>\n<ul>\n<li>docker haldab iptables (kuigi seda saab v\u00e4lja l\u00fclitada daemon.json'is)<\/li>\n<li>docker on katsetamiseks ja tootmises me seda ei jooksuta<\/li>\n<li>kui docker daemon kukub, siis kukuvad ka k\u00f5ik infrastruktuuri konteinerid<\/li>\n<li>dockerit pole vajagi<\/li>\n<li>miks docker, kui on olemas Ansible ja virtuaalmasinad<\/li>\n<\/ul>\n<p><\/p>\n<p>Samas kohas kohtusin veel \u00fche t\u00f6\u00f6riistaga \u2014 Ansible. Kunagi olin kuulnud sellest, kuid ei olnud proovinud oma m\u00e4nguplaanide kirjutamist. N\u00fc\u00fcd olen hakkanud oma \u00fclesandeid kirjutama ja minu n\u00e4gemus on t\u00e4ielikult muutunud! Sest ma taipasin, et Ansible'il on moodulid nende samade docker konteinerite k\u00e4ivitamiseks, piltide kogumiseks, v\u00f5rkudeks jne., ja konteinerid saab k\u00e4ivitada mitte ainult kohapeal, vaid ka eemalserverites! Minu r\u00f5\u00f5m ei olnud piiritletud \u2014 leidsin NORMAALSE t\u00f6\u00f6riista ja viskasin oma Makefile ja docker-compose failid minema, need on asendatud yaml \u00fclesannetega. Kood v\u00e4henes konstruktsioonide kasutamise t\u00f5ttu, nagu <code>loop<\/code>, <code>jne. Mida rohkem te Ansible'i tunnete, seda rohkem n\u00fcansse saate \u00f6elda \"kavalate\" lahenduste kohta. Ja lihtne lahendus \u2014 loomulik jaotus pre\/roles\/post vahel \u2014 ei tekita n\u00fcansse.<\/code>, jne.<\/p>\n<p><\/p>\n<h2>Docker v\u00e4listingimustes komponentide nagu andmebaasi k\u00e4ivitamiseks<\/h2>\n<p><\/p>\n<p>Hiljuti tutvusin ssh tunnelitega. Osutus, et kaugserveri pordi \"edastamine\" kohaliku pordiga on v\u00e4ga lihtne. Kaugserver v\u00f5ib olla nii pilveserver kui ka VirtualBoxis k\u00e4ivitatud virtuaalmasin. Kui mul v\u00f5i mu kolleegil on vaja andmebaasi (v\u00f5i m\u00f5nda muud kolmanda osapoole komponenti), saab lihtsalt k\u00e4ivitada serveri selle komponendiga ja l\u00f5petada, kui serverit enam ei vajata. Pordiedastus annab sama efekti nagu andmebaas, mis t\u00f6\u00f6tab docker konteineris.<\/p>\n<p><\/p>\n<p>See k\u00e4sk edastab minu kohaliku porte kaugserverisse, kus on postgresql:<\/p>\n<p><\/p>\n<blockquote><p>ssh -L 9000:localhost:5432 user@example.com<\/p><\/blockquote>\n<p>Kaugserveri kasutamine lahendab meeskonna arendamise probleemi. Sellist serverit saavad kasutada mitmed arendajad korraga, neil ei ole vaja osata postgresql'i seadistada, dockeriga tegeleda ja muude keerukustega. Kaugserveris saab paigaldada sama andmebaasi dockerisse, kui spetsiifilise versiooni paigaldamine on raske. K\u00f5ik, mida arendajad vajavad \u2014 on anda ssh juurdep\u00e4\u00e4s!<\/p>\n<p><\/p>\n<p>Hiljuti lugesin, et SSH tunnelid on tavalise VPN-i piiratud funktsionaalsus! V\u00f5id lihtsalt seadistada OpenVPN v\u00f5i teised VPN-ide rakendused, seadistada infrastruktuuri ja anda selle arendajatele kasutamiseks. See on ju nii lahe!<\/p>\n<p><\/p>\n<p>Hea, AWS, GoogleCloud ja teised pakuvad aastat tasuta kasutamist, seega kasutage neid! Need on odavad, kui neid mitte kasutada. Olen alati m\u00f5elnud, milleks mul kaugarvuti nagu gcloud v\u00f5iks vaja minna, ja mulle tundub, et olen selle leidnud.<\/p>\n<p><\/p>\n<p>Virtuaalmasinana v\u00f5ib kasutada sama Alpine'i, mida aktiivselt kasutatakse docker konteinerites. V\u00f5i m\u00f5nda muud kerget distributsiooni, et masin kiiremini k\u00e4ivituks.<\/p>\n<p><\/p>\n<p>Kokkuv\u00f5te: andmebaase ja teisi infrastruktuuri vidinaid saab ja tuleb k\u00e4itada kaugarvutites v\u00f5i virtualboxis. Mul pole nende vajaduste jaoks dockerit vaja.<\/p>\n<p><\/p>\n<h2>Veidi docker piltidest ja jaotamisest.<\/h2>\n<p><\/p>\n<p>Olen juba kirjutanud. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/443136\/\">artiklit<\/a><\/noindex> millest tahtsin edastada, et docker piltide kasutamine ei anna mingeid garantiisid. Docker pildid on vajalikud ainult docker konteineri loomiseks. Kui te kasutate docker pilti, siis t\u00e4hendab see, et kasutate docker konteinereid ja te j\u00e4\u00e4te ainult nendega.<\/p>\n<p><\/p>\n<p>Kas olete kuskil n\u00e4inud, et tarkvara arendajad portivad oma tooteid ainult docker pildis?<br \/>\nEnamiku toodete tulemus on binaarfailid teatud platvormi jaoks, need lihtsalt lisatakse docker pilti, mis p\u00e4rineb vajalikult platvormilt. Kas te ei ole m\u00f5elnud, miks dockerhubis on nii palju sarnaseid pilte? Otsige n\u00e4iteks nginx, n\u00e4ete 100500 pilti erinevatelt inimestelt. Need inimesed ei ole ise nginx'i arendanud, vaid nad on lihtsalt oma docker pilti lisanud ametliku nginx'i ja kaunistanud oma seadistustega konteinerite mugavaks k\u00e4ivitamiseks. <\/p>\n<p><\/p>\n<p>Tegelikult v\u00f5ib hoida lihtsalt tgz, kui kellelgi on vaja seda dockeris k\u00e4ivitada, siis laske Dockerfile'is lisada tgz, p\u00e4rineda vajalikust keskkonnast ja luua t\u00e4iendavaid vidinaid, mis ei muuda tgz ise. See, kes loob docker pilti, teab, mis see tgz on ja mida tal t\u00f6\u00f6ks vaja on. Just nii kasutan mina dockerit. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kondaurovDev\/dockerfile\">siit<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Kokkuv\u00f5te: mul pole vaja docker registrit, kasutan m\u00f5nda S3 v\u00f5i lihtsalt failide salvestust nagu google drive\/dropbox.<\/p>\n<p><\/p>\n<h2>Docker CI-s.<\/h2>\n<p><\/p>\n<p>K\u00f5ik firmad, kus olen t\u00f6\u00f6tanud, on \u00fcksteisega sarnased. Need on tavaliselt toote p\u00f5hised. Neil on tavaliselt \u00fcks rakendus, \u00fcks tehnoloogiatehnika (noh, v\u00f5ib-olla paar \u2013 kolm programmeerimiskeelt).<\/p>\n<p><\/p>\n<p>Need on ettev\u00f5tted, mis kasutavad dockerit oma serverites, kus k\u00e4ivitub CI-protsess. K\u00fcsimus on, miks on vaja projekte koguda docker konteineris oma serverites? Miks mitte lihtsalt ette valmistada keskkond kogumiseks, n\u00e4iteks kirjutada Ansible'i m\u00e4ngu, mis installib vajalikud versioonid nodejs, php, jdk, kopeerib ssh v\u00f5tmed jne serverisse, milles kogumine toimub? <\/p>\n<p><\/p>\n<p>Praegu m\u00f5istan, et see on endale jalgu tulistamine, kuna docker ei too oma isoleerimisega mingeid eeliseid. CI probleemid dockeris, millega ma kokku puutusin:<\/p>\n<p><\/p>\n<ul>\n<li>uuesti on vajalik docker pilt kogumiseks. tuleb otsida pilti v\u00f5i kirjutada oma dockerfile.<\/li>\n<li>90% t\u00f5en\u00e4osus, et tuleb edastada mingeid ssh v\u00f5tmeid, salajasi andmeid, mida ei taha docker pildis kirjutada.<\/li>\n<li>konteiner luuakse ja sureb, k\u00f5ik vahem\u00e4lud kaovad koos sellega. J\u00e4rgmine kogumine peab k\u00f5ik projekti s\u00f5ltuvused uuesti alla laadima, mis on aeglane ja ebat\u00f5hus, ning aeg \u2014 see on raha.<\/li>\n<\/ul>\n<p><\/p>\n<p>Arendajad ei kogu projekte docker konteinerites (ma olin kunagi selline f\u00e4nn, kahju endast minevikus xD). Java-s on v\u00f5imalus omada mitu versiooni ja muuta neid \u00fche k\u00e4su abil vastavaks, mis on praegu vajalik. Nodejs-is on sama, on nvm.<\/p>\n<p><\/p>\n<h2>Kokkuv\u00f5te<\/h2>\n<p><\/p>\n<p>Pean seda dockerit v\u00e4ga v\u00f5imsaks ja paindlikuks t\u00f6\u00f6riistaks, kuid selles peitub ka selle puudus (tundub imelik, eks?). Selle abil on ettev\u00f5tted kergesti \"s\u00f5ltuvusse\" sattunud, kasutades seda seal, kus on vaja ja kus ei ole. Arendajad k\u00e4ivitavad oma konteinerid, mingid oma keskkonnad, seej\u00e4rel voolab k\u00f5ik sujuvalt CI-sse, tootmisse. DevOps meeskond kirjutab mingid jalgrattad, et k\u00e4ivitada neid konteinerid.<\/p>\n<p><\/p>\n<p>Kasutage dockerit ainult <strong>k\u00f5ige viimasel<\/strong> sammul oma t\u00f6\u00f6protsessis, \u00e4rge tooge seda projekti algusesse. See ei lahenda teie \u00e4riprobleeme. See lihtsalt nihutab probleeme TEISELE tasemele ja pakub enda lahendusi, teete topelt t\u00f6\u00f6d.<\/p>\n<p><\/p>\n<p><strong><em>Kui on vajalik docker<\/em><\/strong>: j\u00f5udsin arusaamisele, et docker on v\u00e4ga hea olemasoleva protsessi optimeerimisel, kuid mitte p\u00f5hifunktsiooni ehitamisel.<\/p>\n<p><\/p>\n<p>Kui te siiski otsustate dockeri kasutada, siis:<\/p>\n<p><\/p>\n<ul>\n<li>olge \u00e4\u00e4rmiselt ettevaatlikud<\/li>\n<li>\u00e4rge suruge dockeri kasutamist arendajatele peale<\/li>\n<li>localiseerige selle kasutamine \u00fches kohas, \u00e4rge levitage seda \u00fcle k\u00f5ikide hoidlate Dockefile ja docker-compose<\/li>\n<\/ul>\n<p><\/p>\n<p>PS:<\/p>\n<p><\/p>\n<ul>\n<li>Hiljuti leidsin <noindex><a rel=\"nofollow\" href=\"https:\/\/www.packer.io\/\">packer<\/a><\/noindex> ja r\u00e4\u00e4givad, et ta t\u00f6\u00f6tab Ansible'iga v\u00e4ga h\u00e4sti ja v\u00f5imaldab standardiseerida piltide loomise protsessi (sealhulgas docker image'i).<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.smashcompany.com\/technology\/docker-is-a-dangerous-gamble-which-we-will-regret\">ka dockerist, huvitav artikkel.<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Ait\u00e4h, et lugesite, soovin teile l\u00e4bipaistvaid lahendusi teie asjades ja produktiivseid t\u00f6\u00f6p\u00e4evi!<\/p>\n<p>Allikas: <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.1.1 - 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\/et\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\/et\/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\udd47Docker \u2014 kas see on m\u00e4nguasi v\u00f5i mitte? V\u00f5i ikkagi jah? | ProHoster","description":"Tere k\u00f5igile! V\u00e4ga tahaks kohe teema juurde minna, kuid \u00f5igem oleks natuke r\u00e4\u00e4kida oma lugu: Sissejuhatus Olen programmeerija, kellel on frontendi arendamise kogemus.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/31641","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=31641"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/31641\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=31641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=31641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=31641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}