{"id":91905,"date":"2020-08-20T07:42:23","date_gmt":"2020-08-20T05:42:23","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/chto-takoe-docker-kratkij-ekskurs-v-istoriyu-i-osnovnye-abstrakczii"},"modified":"2020-08-20T07:42:23","modified_gmt":"2020-08-20T05:42:23","slug":"chto-takoe-docker-kratkij-ekskurs-v-istoriyu-i-osnovnye-abstrakczii","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/chto-takoe-docker-kratkij-ekskurs-v-istoriyu-i-osnovnye-abstrakczii","title":{"rendered":"Mis on Docker: l\u00fchike \u00fclevaade ajaloost ja peamistest abstraktsioonidest","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>10. augustil k\u00e4ivitus Sl\u00f5rmis <noindex><a rel=\"nofollow\" href=\"http:\/\/to.slurm.io\/2patKQ\">videokursus Dockerist<\/a><\/noindex>, kus k\u00e4sitleme seda t\u00e4ielikult \u2014 alates p\u00f5hialustest kuni v\u00f5rgu parameetriteni. <\/p>\n<p><\/p>\n<p>Selles artiklis r\u00e4\u00e4gime Docker'i ajaloo ja selle peamistest abstraktsioonidest: Image, Cli, Dockerfile. Loeng on suunatud algajatele, seega ei pruugi see kogenud kasutajatele huvi pakkuda. Siin ei tule verd, apendekti ning s\u00fcgavat sukeldumist. Ainult k\u00f5ige alused.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Mis on Docker: l\u00fchike \u00fclevaade ajaloost ja peamistest abstraktsioonidest\" src=\"\/wp-content\/uploads\/2020\/08\/f01af417f24c838577b09bdf90f02fb9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"chto-takoe-docker\">Mis on Docker<\/h2>\n<p><\/p>\n<p>Vaadakem Docker'i m\u00e4\u00e4ratlust Vikipeediast.<\/p>\n<p><\/p>\n<blockquote><p>Docker on tarkvara rakenduste automatiseeritud juurutamiseks ja haldamiseks konteineritoetavates keskkondades.<\/p><\/blockquote>\n<p>Selle m\u00e4\u00e4ratlemisest ei ole midagi selgelt m\u00f5istetav. Eriti ei ole arusaadav, mida t\u00e4hendab \u201ekonteineritoetavates keskkondades\u201c. Selleks, et aru saada, naaseme minevikku. Alustame ajastust, mida ma tinglikult nimetan \u201eMonoliitse ajastuks\u201c.<\/p>\n<p><\/p>\n<h2 id=\"monolitnaya-era\">Monoliitne aeg<\/h2>\n<p><\/p>\n<p>Monoliitne aeg on 2000. aastate algus, kui k\u00f5ik rakendused olid monoliitsed, millega kaasnes hulk s\u00f5ltuvusi. Arendamine oli aeglane. Sel ajal ei olnud servereid palju, me tundsime neid k\u00f5iki nimedega ja j\u00e4lgisime neid. On \u00fcks toredaid v\u00f5rdlusi:<\/p>\n<p>\n<center><div class=\"youtube-placeholder\" data-id=\"Od7e6hqis7A\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/Od7e6hqis7A\/hqdefault.jpg\" alt=\"M\u00e4ngi videot\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p>Lemmikloomad \u2014 need on koduloomad. Monoliitses ajas suhtusime oma serveritesse nagu lemmikloomadesse, hoolitsedes ja hellitades ning hoolitsedes, et need oleksid puhtad. Ja parema ressursihalduse jaoks kasutasime virtualiseerimist: v\u00f5tsime serveri ja jagasime selle mitmeks virtuaalseks masinaks, tagades sellega keskkonna isolatsiooni.<\/p>\n<p><\/p>\n<h2 id=\"sistemy-virtualizacii-na-baze-gipervizora\">H\u00fcperviisori baasil t\u00f6\u00f6tavad virtualiseerimiss\u00fcsteemid<\/h2>\n<p><\/p>\n<p>Virtualiseerimiss\u00fcsteemidest on kindlasti k\u00f5ik kuulnud: VMware, VirtualBox, Hyper-V, Qemu KVM jne. Need tagavad rakenduste isolatsiooni ja ressursihalduse, kuid neil on ka puudusi. Virtualiseerimiseks on vajalik h\u00fcperviisor. Ja h\u00fcperviisor on ressursside \u00fclempiir. Lisaks on virtuaalne masin tavaliselt suur \u2014 raske pilt, millel on operatsioonis\u00fcsteem, Nginx, Apache ja v\u00f5ib-olla ka MySQL. Pilt on suur ja virtuaalse masinaga on ebamugav opereerida. Tulemuseks on see, et t\u00f6\u00f6tamine virtuaalmasinatega v\u00f5ib olla aeglane. Selle probleemi lahendamiseks loodi tuuma tasemel virtualiseerimiss\u00fcsteemid.<\/p>\n<p><\/p>\n<h2 id=\"sistemy-virtualizacii-na-urovne-yadra\">Tuuma tasemel virtualiseerimiss\u00fcsteemid<\/h2>\n<p><\/p>\n<p>Tuuma taseme virtualiseerimist toetavad s\u00fcsteemid on OpenVZ, Systemd-nspawn, LXC. Selge n\u00e4ide sellisest virtualiseerimisest on LXC (Linux Containers). <\/p>\n<p><\/p>\n<p>LXC on operatsioonis\u00fcsteemi tasemel virtualiseerimiss\u00fcsteem, mis v\u00f5imaldab k\u00e4itada mitmeid isoleeritud Linuxi operatsioonis\u00fcsteemi eksemplare \u00fches s\u00f5lmes. LXC ei kasuta virtuaalmasinaid, vaid loob virtuaalse keskkonna oma protsesside ruumi ja v\u00f5rgu p\u00f6\u00f6risega.<\/p>\n<p><\/p>\n<p>Tegelikult loob LXC konteinerid. Mis on erinevus virtuaalmasinate ja konteinerite vahel?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Mis on Docker: l\u00fchike \u00fclevaade ajaloost ja peamistest abstraktsioonidest\" src=\"\/wp-content\/uploads\/2020\/08\/55afdcfd700d4869c9de488033a8e314.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Konteiner ei sobi protsesside isoleerimiseks: tuuma taseme virtualiseerimiss\u00fcsteemides leitakse n\u00f5rkusi, mis v\u00f5imaldavad konteinerist hosti v\u00e4lja p\u00e4\u00e4seda. Seega, kui peate midagi isoleerima, on parem kasutada virtuaalmasinat.<\/p>\n<p><\/p>\n<p>Differentiate virtualiseerimise ja konteineriseerimise vahel saab graafikul n\u00e4ha.<br \/>\nOn f\u00fc\u00fcsilisi h\u00fcperviisoreid, h\u00fcperviisoreid operatsioonis\u00fcsteemi peal ja konteinerid. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Mis on Docker: l\u00fchike \u00fclevaade ajaloost ja peamistest abstraktsioonidest\" src=\"\/wp-content\/uploads\/2020\/08\/a0c06e9adc1fab3b4b5e9e1b05b51d66.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u201eRaud\u201c h\u00fcperviisorid on lahedad, kui soovite midagi t\u00f5eliselt isoleerida. Sest seal on v\u00f5imalus isoleerida m\u00e4lu lehek\u00fclgede ja propageerijate tasemel.<\/p>\n<p><\/p>\n<p>On h\u00fcperviisoreid kui programme ja on konteinerid, millest me edasi r\u00e4\u00e4gime. Konteinerimise s\u00fcsteemides ei ole h\u00fcperviisorid, vaid on Container Engine, mis loob ja haldab konteinerite. See on kergem, seega j\u00e4relikult on tuuma t\u00f6\u00f6 t\u00f5ttu \u00fclekoormus v\u00e4iksem v\u00f5i puudub see t\u00e4ielikult.<\/p>\n<p><\/p>\n<blockquote>\n<h2 id=\"chto-ispolzuetsya-dlya-konteynerizacii-na-urovne-yadra\">Mida kasutatakse konteinerimise taseme isoleerimiseks.<\/h2>\n<p>Peamised tehnoloogiad, mis v\u00f5imaldavad luua teistest protsessidest isoleeritud konteineri, on Namespaces ja Control Groups.<\/p>\n<p>Namespaces: PID, Networking, Mount ja User. On veel ka teisi, aga lihtsustamise huvides peatume nendele.<\/p>\n<p>PID Namespace piirab protsesse. Kui me n\u00e4iteks loome PID Namespaces ja paneme sinna protsessi, siis saab see PID 1. Tavaliselt on s\u00fcsteemides PID 1 systemd v\u00f5i init. Seega, kui paneme protsessi uude namespace'i, saadab see samuti PID 1.<\/p>\n<p>Networking Namespace v\u00f5imaldab piirata\/isoleerida v\u00f5rku ja seal sees juba paigutada oma liidesed. Mount on piirang failis\u00fcsteemi osas. User on piirang kasutajate osas.<\/p>\n<p>Control Groups: Memory, CPU, IOPS, Network \u2014 kokku ligikaudu 12 seadistust. Neid tuntakse ka kui Cgroups (\u201eC-grupid\u201c).<\/p>\n<p>Control Groups haldavad konteineri ressursse. Control Groups'i kaudu saame \u00f6elda, et konteiner ei tohiks tarbida rohkem kui mingi ressursside hulk.<\/p>\n<p>Ette, et konteineriseerimine toimiks t\u00f5husalt, kasutatakse t\u00e4iendavaid tehnoloogiaid: Capabilities, Copy-on-write ja teised.<\/p>\n<p>Capabilities t\u00e4hendab, et me \u00fctleme protsessile, mida ta tohib teha ja mida mitte. S\u00fcsteemi tasandil on need lihtsalt bitikaardid, millel on palju parameetreid. N\u00e4iteks root-kasutajal on t\u00e4ielikud \u00f5igused, ta v\u00f5ib teha k\u00f5ike. Aja teenus saab muuta s\u00fcsteemi aega: tal on capabilities Time Capsule'i osas, ja k\u00f5ik. Lubade abil saab paindlikult seadistada piiranguid protsessidele, tagades seel\u00e4bi enda turvalisuse.<\/p>\n<p>Copy-on-write s\u00fcsteem v\u00f5imaldab meil t\u00f6\u00f6tada Docker-piltidega ja kasutada neid efektiivsemalt.<\/p>\n<p><em>Praegu on Dockeril probleeme Cgroups v2 \u00fchilduvusega, seet\u00f5ttu r\u00e4\u00e4gime artiklis just Cgroups v1-st.<\/em><\/p><\/blockquote>\n<p>Aga naaseme ajalukku. <\/p>\n<p><\/p>\n<p>Kui tuumikutasemel virtualiseerimiss\u00fcsteemid ilmusid, hakati neid aktiivselt rakendama. H\u00fcpperv\u00e4\u00e4ri kulu kadus, kuid m\u00f5ned probleemid j\u00e4id:<\/p>\n<p><\/p>\n<ul>\n<li>suured pildid: OpenVZ-sse surutakse operatsioonis\u00fcsteem, raamatukogud ja hulgaliselt erinevat tarkvara ning l\u00f5puks on pilt ikka veel \u00fcsna suur;<\/li>\n<li>puudub normaalne pakendi ja kohaletoimetamise standard, seega j\u00e4\u00e4b alles s\u00f5ltuvuste probleem. On olukordi, kus kaks koodit\u00fckki kasutavad \u00fchte raamatukogu, kuid erinevate versioonidega. Nende vahel v\u00f5ib tekkida konflikt.<\/li>\n<\/ul>\n<p><\/p>\n<p>Kuna k\u00f5ik need probleemid lahendada, tuli j\u00e4rgmine ajastu.<\/p>\n<p><\/p>\n<h2 id=\"era-konteynerov\">Konteinerite ajastu<\/h2>\n<p><\/p>\n<p>Konteinerite ajastu t\u00f5i kaasa uue filosoofia nende kasutamiseks:<\/p>\n<p><\/p>\n<ul>\n<li>\u00dcks protsess \u2014 \u00fcks konteiner.<\/li>\n<li>Kohandame k\u00f5ik vajaliku protsessi s\u00f5ltuvused tema konteinerisse. See t\u00e4hendab, et monoliidid tuleb jagada mikroteenusteks.<\/li>\n<li>Mida v\u00e4iksem on pilt, seda parem \u2014 v\u00e4hem v\u00f5imalikke haavatavusi, kiiremini laienev ja nii edasi.<\/li>\n<li>Instantsid muutuvad efektiivseteks. <\/li>\n<\/ul>\n<p><\/p>\n<p>Kas sa m\u00e4letad, kuidas ma r\u00e4\u00e4kisin koduloomadest vs kasvatustest? Varem olid instantsid nagu koduloomad, n\u00fc\u00fcd on nad nagu loomakarja. Varem oli monoliit \u2014 \u00fcks rakendus. N\u00fc\u00fcd on see 100 mikroteenust, 100 konteinerit. M\u00f5nel konteineril v\u00f5ib olla 2-3 koopiat. Meile ei ole enam nii oluline kontrollida iga konteinerit. Meie jaoks on t\u00e4htsam teenuse k\u00e4ttesaadavus: see, mida see konteinerite komplekt teeb. See muudab j\u00e4lgimismeetodeid.<\/p>\n<p><\/p>\n<p>2014-2015. aastal toimus Docker'i t\u00f5us \u2014 tehnoloogia, millest me n\u00fc\u00fcd r\u00e4\u00e4gime.<\/p>\n<p><\/p>\n<p>Docker on muutnud filosoofiat ja standardiseerinud rakenduste pakkimise. Dockeriga saame rakenduse pakkida, saata selle registrisse, laadida sealt alla ja k\u00e4ivitada. <\/p>\n<p><\/p>\n<p>Docker-konteinerisse paneme k\u00f5ik vajaliku, mist\u00f5ttu lahendame s\u00f5ltuvuste probleemi. Docker tagab korduvuse. Ma arvan, et paljud on kogenud olukordi, kus k\u00f5ik t\u00f6\u00f6tab, aga kui t\u00f5ukate tootmisse, siis see enam ei t\u00f6\u00f6ta. Dockeriga see probleem kaob. Kui teie Docker-konteiner k\u00e4ivitub ja teeb seda, mida on vaja, siis on t\u00f5en\u00e4oliselt, et see k\u00e4ivitub ka tootmises ja teeb seal samu toiminguid.<\/p>\n<p><\/p>\n<blockquote>\n<h2 id=\"otstuplenie-pro-overhed\">K\u00e4reduse \u00fcle vaidlused<\/h2>\n<p>K\u00e4reduse \u00fcle on pidevalt vaieldud. M\u00f5ned arvavad, et Docker ei too kaasa t\u00e4iendavat koormust, kuna kasutab Linuxi tuuma ja k\u00f5iki selle konteinerimiseks vajalikke protsesse. Nagu \u00f6eldakse: \"Kui \u00fctlete, et Docker on koormus, siis on ka Linuxi tuum koormus.\"<\/p>\n<p>Teisest k\u00fcljest, kui s\u00fc\u00fcbida, on Dockeris t\u00f5epoolest m\u00f5ned asjad, mida v\u00f5ib venitada, et neid v\u00f5iks pidada koormuseks.<\/p>\n<p>Esiteks on see PID namespace. Kui paneme mingi protsessi namespace'i, antakse sellele PID 1. Samas on sellel protsessil veel \u00fcks PID, mis asub hosti namespace'is, konteinerist v\u00e4ljaspool. N\u00e4iteks, kui k\u00e4ivitame Nginx'i konteineris, siis saab see PID 1 (peaprosess). Ja hostil on sellel PID 12623. Ja on keeruline \u00f6elda, kui suur koormus see on.<\/p>\n<p>Teine asi on Cgroups. V\u00f5tame Cgroups'i m\u00e4lu p\u00f5hjal, st v\u00f5ime piirata konteinerile m\u00e4lu. Selle sissel\u00fclitamisel aktiveeritakse arvestid, m\u00e4lu arvestus: tuum peab m\u00f5istma, kui palju lehti on eraldatud ja kui palju on selle konteineri jaoks veel vaba. See v\u00f5ib olla koormus, kuid ma ei ole n\u00e4inud t\u00e4pseid uuringuid selle kohta, kuidas see m\u00f5jutab j\u00f5udlust. Ja ma ise ei ole m\u00e4rganud, et rakendus, mis on Dockeris k\u00e4ivitatud, kaotaks \u00e4kki j\u00f5udlust. <\/p>\n<p>Ja veel \u00fcks m\u00e4rkuse j\u00f5udluse kohta. Teatud tuuma parameetrid edastatakse hostist konteinerisse. Eriti m\u00f5ned v\u00f5rguparameetrid. Seet\u00f5ttu, kui soovite Dockeris k\u00e4ivitada midagi k\u00f5rge j\u00f5udlusega, n\u00e4iteks midagi, mis kasutab aktiivselt v\u00f5rku, peate v\u00e4hemalt neid parameetreid kohandama. N\u00e4iteks nf_conntrack. <\/p><\/blockquote>\n<p><\/p>\n<h2 id=\"o-koncepcii-docker\">Docker'i kontseptsioonist<\/h2>\n<p><\/p>\n<p>Docker koosneb mitmest komponendist: <\/p>\n<p><\/p>\n<ol>\n<li>Docker Daemon \u2014 see on Container Engine; k\u00e4ivitab konteinerid. <\/li>\n<li>Docker CII \u2014 t\u00f6\u00f6riist Docker'i haldamiseks.<\/li>\n<li>Dockerfile \u2014 juhis, kuidas pilti koguda.<\/li>\n<li>Image \u2014 pilt, millest konteiner turvaliselt jooksma pannakse.<\/li>\n<li>Konteiner.<\/li>\n<li>Docker registry \u2014 piltide hoidla.<\/li>\n<\/ol>\n<p><\/p>\n<p>Skeemiliselt n\u00e4eb see v\u00e4lja umbes nii:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Mis on Docker: l\u00fchike \u00fclevaade ajaloost ja peamistest abstraktsioonidest\" src=\"\/wp-content\/uploads\/2020\/08\/73ccc02c14485f72cfd7c64e3074f3b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Docker_hostil t\u00f6\u00f6tab Docker daemon, mis k\u00e4ivitab konteinerid. On olemas Client, mis edastab k\u00e4ske: kogu pilt, laadi pilt, k\u00e4ivita konteiner. Docker daemon k\u00e4ib registry's ja t\u00e4idab neid. Docker-cliendi v\u00f5ib p\u00f6\u00f6rduda nii kohalikult (unix-soketile) kui ka TCP kaudu eemalt.<\/p>\n<p><\/p>\n<p>Vaatame igat komponenti.<\/p>\n<p><\/p>\n<p><u>Docker daemon (demon)<\/u> \u2014 see on serveripool, see t\u00f6\u00f6tab host-masinal: laeb pilte ja k\u00e4ivitab nendest konteinerid, loob konteinerite vahel v\u00f5rgu, kogub logisid. Kui me \u00fctleme \"loo pilt\", tegeleb sellega ka demon.<\/p>\n<p><\/p>\n<p><u>Docker CLI<\/u> \u2014 Docker'i kliendipool, konsooli t\u00f6\u00f6riist demoni korraldamiseks. Kordan, see v\u00f5ib t\u00f6\u00f6tada mitte ainult kohalikult, vaid ka v\u00f5rgus. <\/p>\n<p><\/p>\n<p><strong>P\u00f5hik\u00e4sud:<\/strong><\/p>\n<p><\/p>\n<p>docker ps \u2014 kuvab konteinerid, mis praegu on k\u00e4ivitatud Docker-hostis.<br \/>\ndocker images \u2014 kuvab kohalikult allalaaditud pildid.<br \/>\ndocker search &lt;&gt; \u2014 pildi otsing registry's.<br \/>\ndocker pull &lt;&gt; \u2014 laadi pilt registry'st masinasse alla.<br \/>\ndocker build &lt;&lt;\\\/path\\\/to\\\/dir&gt;&gt; \u2014 koguge pilt.<br \/>\ndocker run &lt;&gt; \u2014 k\u00e4ivita konteiner.<br \/>\ndocker rm &lt;&gt; \u2014 kustuta konteiner.<br \/>\ndocker logs &lt;&gt; \u2014 konteineri logid<br \/>\ndocker start\/stop\/restart &lt;&gt; \u2014 t\u00f6\u00f6delge konteinerit\n<\/p>\n<p>Kui olete need k\u00e4sud selgeks saanud ja hakkate neid kindlalt kasutama, siis arvestage, et olete 70% Dockerist kasutaja tasemel omandanud.<\/p>\n<p><\/p>\n<p><u>Dockerfile<\/u> \u2014 juhis pildi loomiseks. Peaaegu iga k\u00e4su juhises \u2014 uus kiht. Vaadake n\u00e4ite j\u00e4rgi.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Mis on Docker: l\u00fchike \u00fclevaade ajaloost ja peamistest abstraktsioonidest\" src=\"\/wp-content\/uploads\/2020\/08\/4d61b58d0d0d8b2e4ddbbfe573f34f7e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Umbes nii n\u00e4eb Dockerfile v\u00e4lja: vasakul k\u00e4sud, paremal \u2014 argumendid. Iga k\u00e4sk, mis siin on (ja \u00fcldiselt kirjutatakse Dockerfile's), loob uue kihi Image'i sees. <\/p>\n<p><\/p>\n<p>Juba vasakule poole vaatamine annab aimu, mis toimub. Me \u00fctleme: \u00abloo meile kaust\u00bb \u2014 see on \u00fcks kiht. \u00abTee kaust aktiivseks\u00bb \u2014 see on veel \u00fcks kiht ja nii edasi. Kihtedega tort lihtsustab elu. Kui ma loon veel \u00fche Dockerfile'i ja muudan viimases real midagi \u2014 ei k\u00e4ivita ma \u00abpython main.py\u00bb, vaid midagi muud v\u00f5i installin s\u00f5ltuvusi teisest failist \u2014 siis eelnevaid kihte kasutatakse taas, nagu vahem\u00e4lu.<\/p>\n<p><\/p>\n<p><u>Pilt<\/u> \u2014 see on konteineri pakett, millest k\u00e4ivitatakse konteinerid. Kui vaadata Dockerit nagu pakkemanagerit (nagu t\u00f6\u00f6taksime deb v\u00f5i rpm-pakkidega), siis image on p\u00f5him\u00f5tteliselt rpm-pakk. Yumi installimise kaudu saame rakenduse paigaldada, selle eemaldada, leida hoidlast, alla laadida. Siin on sama: konteinerid k\u00e4ivitatakse pildist, need salvestatakse Docker registry's (analoogina toaga) ja iga image'il on SHA-256 hash, nimi ja silt.<\/p>\n<p><\/p>\n<p>Image koostatakse Dockerfile'i juhiste j\u00e4rgi. Iga juhis Dockerfile'is loob uue kihi. Kihti saab taaskasutada.<\/p>\n<p><\/p>\n<p><u>Docker registry<\/u> \u2014 on Docker'i piltide hoidla. Analoogina operatsioonis\u00fcsteemidele, on Dockeril avalik standardne registri \u2014 dockerhub. Kuid v\u00f5ite luua oma hoidla, oma Docker registry. <\/p>\n<p><\/p>\n<p><u>Konteiner<\/u> \u2014 see, mis k\u00e4ivitatakse pildist. Koostasime pildi Dockerfile'i juhiste j\u00e4rgi, seej\u00e4rel k\u00e4ivitame me selle pildist. See konteiner on teistest konteineritest isoleeritud, see peab sisaldama k\u00f5ike vajalikku rakenduse t\u00f6\u00f6tamiseks. Samuti t\u00e4hendab see, et \u00fcks konteiner \u2014 \u00fcks protsess. On juhtumeid, kus tuleb teha kaks protsessi, kuid see on veidi vastuolus Docker'i ideoloogiaga.<\/p>\n<p><\/p>\n<p>N\u00f5ue \"\u00fcks konteiner \u2014 \u00fcks protsess\" on seotud PID Namespace'iga. Kui Namespace'is k\u00e4ivitatakse protsess PID 1-ga ja kui see \u00e4kki sureb, siis sureb kogu konteiner samuti. Kui seal k\u00e4ivitatakse kaks protsessi: \u00fcks elab, teine sureb, j\u00e4tkab konteiner kuidagi elamist. Kuid see puudutab parimaid tavasid, neist r\u00e4\u00e4gime teistes materjalides.<\/p>\n<p><\/p>\n<p>Rohkem teavet kursuse erip\u00e4rade ja t\u00e4ieliku programmi kohta leiate lingilt: \u00ab<noindex><a rel=\"nofollow\" href=\"http:\/\/to.slurm.io\/2patKQ\">Videokursuse Dockerist<\/a><\/noindex>\u00bb. <\/p>\n<p><\/p>\n<p><em>Autor: Marcel Ibiraev, sertifitseeritud Kubernetes'i administraator, praktiseeriv insener Southbridge'is, esineja ja Sl\u00f5rmi kursuste arendaja.<\/em><\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/515508\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>10 \u0430\u0432\u0433\u0443\u0441\u0442\u0430 \u0432 \u0421\u043b\u0451\u0440\u043c \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u043b \u0432\u0438\u0434\u0435\u043e\u043a\u0443\u0440\u0441 \u043f\u043e Docker, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c \u0435\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u2014 \u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439 \u0434\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u0435\u0442\u0438. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e\u0431 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f Docker \u0438 \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f\u0445: Image, Cli, Dockerfile. \u041b\u0435\u043a\u0446\u0438\u044f \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u0430 \u043d\u0430 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0440\u044f\u0434 \u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u043e\u043f\u044b\u0442\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c. \u0417\u0434\u0435\u0441\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043a\u0440\u043e\u0432\u0438, \u0430\u043f\u043f\u0435\u043d\u0434\u0438\u043a\u0441\u0430 \u0438 \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0433\u043e \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u044f. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":91906,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-91905","post","type-post","status-publish","format-standard","has-post-thumbnail","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=\"10 \u0430\u0432\u0433\u0443\u0441\u0442\u0430 \u0432 \u0421\u043b\u0451\u0440\u043c \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u043b \u0432\u0438\u0434\u0435\u043e\u043a\u0443\u0440\u0441 \u043f\u043e Docker, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c \u0435\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u2014 \u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439 \u0434\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u0435\u0442\u0438.\" \/>\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\/chto-takoe-docker-kratkij-ekskurs-v-istoriyu-i-osnovnye-abstrakczii\" \/>\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\udd47\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Docker: \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u044d\u043a\u0441\u043a\u0443\u0440\u0441 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"10 \u0430\u0432\u0433\u0443\u0441\u0442\u0430 \u0432 \u0421\u043b\u0451\u0440\u043c \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u043b \u0432\u0438\u0434\u0435\u043e\u043a\u0443\u0440\u0441 \u043f\u043e Docker, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c \u0435\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u2014 \u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439 \u0434\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u0435\u0442\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/chto-takoe-docker-kratkij-ekskurs-v-istoriyu-i-osnovnye-abstrakczii\" \/>\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=\"2020-08-20T05:42:23+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-20T05:42:23+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\udd47 Mis on Docker: l\u00fchike \u00fclevaade ajaloost ja p\u00f5hiabstraktsioonidest | ProHoster","description":"10. augustil algas Sl\u00f5rm'is videokursus Dockerist, kus k\u00e4sitleme seda t\u00e4ielikult \u2014 alates p\u00f5hihalduse abstraktsioonidest kuni v\u00f5rguparametriteni.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/chto-takoe-docker-kratkij-ekskurs-v-istoriyu-i-osnovnye-abstrakczii","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\udd47\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Docker: \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u044d\u043a\u0441\u043a\u0443\u0440\u0441 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 | ProHoster","og:description":"10 \u0430\u0432\u0433\u0443\u0441\u0442\u0430 \u0432 \u0421\u043b\u0451\u0440\u043c \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u043b \u0432\u0438\u0434\u0435\u043e\u043a\u0443\u0440\u0441 \u043f\u043e Docker, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c \u0435\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u2014 \u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439 \u0434\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u0435\u0442\u0438.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/chto-takoe-docker-kratkij-ekskurs-v-istoriyu-i-osnovnye-abstrakczii","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":"2020-08-20T05:42:23+00:00","article:modified_time":"2020-08-20T05:42:23+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"91905","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:18:28","updated":"2022-10-01 05:09:53","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\/91905","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=91905"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/91905\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/91906"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=91905"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=91905"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=91905"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}