{"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\/sq\/blog\/administrirovanie\/chto-takoe-docker-kratkij-ekskurs-v-istoriyu-i-osnovnye-abstrakczii","title":{"rendered":"\u00c7far\u00eb \u00ebsht\u00eb Docker: nj\u00eb ekskurs i shkurt\u00ebr n\u00eb histori dhe abstraksionet kryesore.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>M\u00eb 10 gusht n\u00eb Sl\u00ebrm nisi <noindex><a rel=\"nofollow\" href=\"http:\/\/to.slurm.io\/2patKQ\">kursi n\u00eb video mbi Docker<\/a><\/noindex>, n\u00eb t\u00eb cilin analizojm\u00eb at\u00eb plot\u00ebsisht \u2014 nga abstraksionet baz\u00eb deri te parametrat e rrjet\u00ebs. <\/p>\n<p><\/p>\n<p>N\u00eb k\u00ebt\u00eb artikull do t\u00eb flasim p\u00ebr historin\u00eb e shfaqjes s\u00eb Docker dhe abstraksionet e tij kryesore: Image, Cli, Dockerfile. Lekura \u00ebsht\u00eb e p\u00ebrgatitur p\u00ebr fillestar\u00ebt, prandaj \u00ebsht\u00eb e v\u00ebshtir\u00eb q\u00eb t\u00eb jet\u00eb interesante p\u00ebr p\u00ebrdoruesit e avancuar. Nuk do t\u00eb ket\u00eb gjak, apendiks dhe zhytje t\u00eb thell\u00eb. Bazat e thjeshta.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00c7far\u00eb \u00ebsht\u00eb Docker: nj\u00eb ekskurs i shkurt\u00ebr n\u00eb histori dhe abstraksionet kryesore.\" 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\">\u00c7far\u00eb \u00ebsht\u00eb Docker<\/h2>\n<p><\/p>\n<p>Le t\u00eb shohim definicionin e Docker nga Wikipedia.<\/p>\n<p><\/p>\n<blockquote><p>Docker \u00ebsht\u00eb nj\u00eb software p\u00ebr automatizimin e shp\u00ebrndarjes dhe menaxhimin e aplikacioneve n\u00eb mjedise q\u00eb mb\u00ebshtesin kontenierizimin.<\/p><\/blockquote>\n<p>Nga ky p\u00ebrkufizim nuk kuptohet asgj\u00eb. Sidomos nuk kuptohet \u00e7far\u00eb do t\u00eb thot\u00eb \"n\u00eb mjedise q\u00eb mb\u00ebshtesin kontenierizimin\". P\u00ebr t\u00eb kuptuar, le t\u00eb kthehemi n\u00eb t\u00eb kaluar\u00ebn. T\u00eb fillojm\u00eb nga epoka, t\u00eb cil\u00ebn e quaj \"Era Monolitike\".<\/p>\n<p><\/p>\n<h2 id=\"monolitnaya-era\">Era Monolitike<\/h2>\n<p><\/p>\n<p>Era Monolitike \u2014 \u00ebsht\u00eb fillimi i viteve 2000 kur t\u00eb gjitha aplikacionet ishin monolitike, me shum\u00eb var\u00ebsi. Zhvillimi zgjaste gjat\u00eb. N\u00eb k\u00ebt\u00eb koh\u00eb server\u00ebt nuk ishin aq shum\u00eb, i njihnim t\u00eb gjith\u00eb me emra dhe i monitoronim. Ka nj\u00eb krahasim t\u00eb k\u00ebndsh\u00ebm:<\/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=\"Luaj videon\" 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>Kafsh\u00ebt sht\u00ebpiake \u2014 N\u00eb epok\u00ebn monolitike, ne u sillnim server\u00ebve tan\u00eb si ndaj kafsh\u00ebve sht\u00ebpiake, i kujdeseshim dhe i p\u00ebrk\u00ebdhelim, duke e hequr pluhurin me kujdes. P\u00ebr menaxhim m\u00eb t\u00eb mir\u00eb t\u00eb burimeve p\u00ebrdornim virtualizimin: merrnim nj\u00eb server dhe e ndajm\u00eb n\u00eb disa makina virtuale, duke siguruar k\u00ebshtu izolimin e mjedisit.<\/p>\n<p><\/p>\n<h2 id=\"sistemy-virtualizacii-na-baze-gipervizora\">Sistemet e virtualizimit bazuar n\u00eb hipervizor\u00eb<\/h2>\n<p><\/p>\n<p>Sigurisht, t\u00eb gjith\u00eb kan\u00eb d\u00ebgjuar p\u00ebr sistemet e virtualizimit: VMware, VirtualBox, Hyper-V, Qemu KVM etj. Ato sigurojn\u00eb izolimin e aplikacioneve dhe menaxhimin e burimeve, por kan\u00eb edhe disavantazhe. P\u00ebr t\u00eb b\u00ebr\u00eb virtualizimin, nevojitet nj\u00eb hipervizor. Dhe hipervizori \u00ebsht\u00eb nj\u00eb ngarkes\u00eb burimesh. Gjithashtu, makina virtuale vet\u00eb \u00ebsht\u00eb zakonisht nj\u00eb makin\u00eb e madhe \u2014 nj\u00eb imazh i r\u00ebnd\u00eb, n\u00eb t\u00eb cilin ndodhet sistemi operativ, Nginx, Apache, ndoshta dhe MySQL. Imazhi \u00ebsht\u00eb i madh, dhe operimi me makinat virtuale mund t\u00eb jet\u00eb i ngadalt\u00eb. P\u00ebr t\u00eb zgjidhur k\u00ebt\u00eb problem, u krijuan sistemet e virtualizimit n\u00eb nivelin e b\u00ebrtham\u00ebs.<\/p>\n<p><\/p>\n<h2 id=\"sistemy-virtualizacii-na-urovne-yadra\">Sistemet e virtualizimit n\u00eb nivelin e b\u00ebrtham\u00ebs<\/h2>\n<p><\/p>\n<p>Virtualizimi n\u00eb nivelin e b\u00ebrtham\u00ebs mb\u00ebshtetet nga sistemet OpenVZ, Systemd-nspawn, LXC. Nj\u00eb shembull i spikatur i k\u00ebsaj virtualizimi \u00ebsht\u00eb LXC (Linux Containers). <\/p>\n<p><\/p>\n<p>LXC \u2014 nj\u00eb sistem virtualizimi n\u00eb nivelin e sistemit operativ p\u00ebr t\u00eb drejtuar disa ekzemplar\u00eb t\u00eb izoluar t\u00eb sistemit operativ Linux n\u00eb nj\u00eb nod. LXC nuk p\u00ebrdor makina virtuale, por krijon nj\u00eb ambient virtual me hap\u00ebsir\u00eb procesesh dhe nj\u00eb stack rrjeti t\u00eb vetin.<\/p>\n<p><\/p>\n<p>N\u00eb thelb, LXC krijon kontejner\u00eb. Cila \u00ebsht\u00eb diferenca midis makinave virtuale dhe kontejner\u00ebve?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00c7far\u00eb \u00ebsht\u00eb Docker: nj\u00eb ekskurs i shkurt\u00ebr n\u00eb histori dhe abstraksionet kryesore.\" src=\"\/wp-content\/uploads\/2020\/08\/55afdcfd700d4869c9de488033a8e314.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kontejneri nuk \u00ebsht\u00eb i p\u00ebrshtatsh\u00ebm p\u00ebr izolimin e proceseve: n\u00eb sistemet e virtualizimit n\u00eb nivelin e b\u00ebrtham\u00ebs gjen dritare t\u00eb siguris\u00eb q\u00eb lejojn\u00eb t\u00eb dalin nga kontejneri n\u00eb host. Prandaj, n\u00ebse ju nevojitet t\u00eb izoloni di\u00e7ka, \u00ebsht\u00eb m\u00eb mir\u00eb t\u00eb p\u00ebrdorni nj\u00eb makin\u00eb virtuale.<\/p>\n<p><\/p>\n<p>Diferencat midis virtualizimit dhe kontejnerizimit mund t\u00eb shihen n\u00eb nj\u00eb skem\u00eb.<br \/>\nKa hipervizor\u00eb t\u00eb harduerit, hipervizor\u00eb mbi OS dhe kontejner\u00eb. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00c7far\u00eb \u00ebsht\u00eb Docker: nj\u00eb ekskurs i shkurt\u00ebr n\u00eb histori dhe abstraksionet kryesore.\" src=\"\/wp-content\/uploads\/2020\/08\/a0c06e9adc1fab3b4b5e9e1b05b51d66.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hipervizor\u00ebt 'e harduerit' jan\u00eb nj\u00eb gj\u00eb e bukur, n\u00ebse v\u00ebrtet d\u00ebshironi t\u00eb izoloni di\u00e7ka. Sepse aty ka mund\u00ebsi p\u00ebr izolim n\u00eb nivelin e faqeve t\u00eb memories, procesor\u00ebve.<\/p>\n<p><\/p>\n<p>Ka hipervizor\u00eb si programe, dhe ka kontejner\u00eb, p\u00ebr t\u00eb cil\u00ebt do t\u00eb flasim m\u00eb tej. N\u00eb sistemet e kontejnerizimit nuk ka hipervizor, por ka nj\u00eb Container Engine q\u00eb krijon dhe menaxhon kontejner\u00ebt. Kjo \u00ebsht\u00eb m\u00eb e leht\u00eb, prandaj p\u00ebr shkak t\u00eb pun\u00ebs me b\u00ebrtham\u00ebn overhead \u00ebsht\u00eb m\u00eb e vog\u00ebl, ose nuk ka fare.<\/p>\n<p><\/p>\n<blockquote>\n<h2 id=\"chto-ispolzuetsya-dlya-konteynerizacii-na-urovne-yadra\">\u00c7far\u00eb p\u00ebrdoret p\u00ebr kontejnerizim n\u00eb nivelin e b\u00ebrtham\u00ebs<\/h2>\n<p>Teknologjit\u00eb kryesore q\u00eb lejojn\u00eb krijimin e nj\u00eb kontejneri t\u00eb izoluar nga proceset e tjera jan\u00eb Namespaces dhe Control Groups.<\/p>\n<p>Namespaces: PID, Networking, Mount dhe User. Ka edhe t\u00eb tjera, por p\u00ebr thjesht\u00ebsin\u00eb e kuptimit do t\u00eb ndalemi tek k\u00ebto.<\/p>\n<p>PID Namespace kufizon proceset. Kur ne, p\u00ebr shembull, krijojm\u00eb nj\u00eb PID Namespace, dhe vendosim aty nj\u00eb proces, ai b\u00ebhet me PID 1. Zakonisht n\u00eb sistemet, PID 1 \u00ebsht\u00eb systemd ose init. Prandaj, kur ne vendosim nj\u00eb proces n\u00eb nj\u00eb namespace t\u00eb ri, ai gjithashtu merr PID 1.<\/p>\n<p>Networking Namespace lejon kufizimin\/izolimin e rrjetit dhe brenda tij mund t\u00eb vendosen nd\u00ebrfaqet e veta. Mount \u00ebsht\u00eb kufizimi mbi sistemin e skedar\u00ebve. User \u00ebsht\u00eb kufizim mbi p\u00ebrdoruesit.<\/p>\n<p>Control Groups: Memory, CPU, IOPS, Network \u2014 rreth 12 konfigurime gjithsej. Ndryshe quhen edhe Cgroups ('C-grupet').<\/p>\n<p>Control Groups menaxhojn\u00eb burimet p\u00ebr kontejnerin. N\u00ebp\u00ebrmjet Control Groups mund t\u00eb themi se kontejneri nuk duhet t\u00eb konsumoj\u00eb m\u00eb shum\u00eb se nj\u00eb sasi t\u00eb caktuar burimesh.<\/p>\n<p>P\u00ebr t\u00eb funksionuar plot\u00ebsisht, kontenierizimi p\u00ebrdor teknologji shtes\u00eb: Capabilities, Copy-on-write dhe t\u00eb tjera.<\/p>\n<p>Capabilities \u00ebsht\u00eb kur i themi procesit se \u00e7far\u00eb mund t\u00eb b\u00ebj\u00eb dhe \u00e7far\u00eb jo. N\u00eb nivelin e b\u00ebrtham\u00ebs, jan\u00eb thjesht harta bit p\u00ebr shum\u00eb parametra. P\u00ebr shembull, p\u00ebrdoruesi root ka privilegje t\u00eb plota, mund t\u00eb b\u00ebj\u00eb gjith\u00e7ka. Nj\u00eb server i koh\u00ebs mund t\u00eb ndryshoj\u00eb koh\u00ebn sistemike: ai ka capabilities p\u00ebr Time Capsule, dhe gjith\u00e7ka. Me ndihm\u00ebn e privilegjeve mund t\u00eb rregullojm\u00eb n\u00eb m\u00ebnyr\u00eb fleksibile kufizimet p\u00ebr proceset, duke siguruar vet\u00ebn.<\/p>\n<p>Sistemi Copy-on-write na lejon t\u00eb punojm\u00eb me imazhe Docker, duke i p\u00ebrdorur ato m\u00eb efikas.<\/p>\n<p><em>Aktualisht Docker ka probleme me p\u00ebrputhshm\u00ebrin\u00eb e Cgroups v2, prandaj ky artikull shqyrton pik\u00ebrisht Cgroups v1.<\/em><\/p><\/blockquote>\n<p>Por le t\u00eb kthehemi n\u00eb histori. <\/p>\n<p><\/p>\n<p>Kur u shfaq\u00ebn sistemet e virtualizimit n\u00eb nivelin e b\u00ebrtham\u00ebs, ato filluan t\u00eb aplikohen intensivisht. Overhedi n\u00eb hipervizor humbi, por disa probleme mbet\u00ebn:<\/p>\n<p><\/p>\n<ul>\n<li>imazhe t\u00eb m\u00ebdha: n\u00eb t\u00eb nj\u00ebjt\u00ebn OpenVZ shtyjn\u00eb sistemin operativ, bibliotekat, nj\u00eb mori software-t, dhe n\u00eb fund imazhi ende rezulton t\u00eb jet\u00eb i madh;<\/li>\n<li>nuk ka nj\u00eb standard t\u00eb mir\u00eb p\u00ebr paketimin dhe d\u00ebrgimin, prandaj mbetet problemi i var\u00ebsive. Ka raste kur dy copa kodi p\u00ebrdorin nj\u00eb bibliotek\u00eb, por me versione t\u00eb ndryshme. Nd\u00ebrmjet tyre mund t\u00eb ket\u00eb nj\u00eb konflikt.<\/li>\n<\/ul>\n<p><\/p>\n<p>P\u00ebr t\u00eb zgjidhur t\u00eb gjitha k\u00ebto probleme, erdhi epoka e ardhshme.<\/p>\n<p><\/p>\n<h2 id=\"era-konteynerov\">Epoka e kontenier\u00ebve<\/h2>\n<p><\/p>\n<p>Kur erdhi Epoka e kontenier\u00ebve, ndryshoi filozofia e pun\u00ebs me to:<\/p>\n<p><\/p>\n<ul>\n<li>Nj\u00eb proces \u2014 nj\u00eb kontenier.<\/li>\n<li>T\u00eb gjitha var\u00ebsit\u00eb e nevojshme p\u00ebr procesin i d\u00ebrgojm\u00eb n\u00eb kontenierin e tij. Kjo k\u00ebrkon q\u00eb t\u00eb prishim monolit\u00ebt n\u00eb mikrosh\u00ebrbime.<\/li>\n<li>Sa m\u00eb e vog\u00ebl t\u00eb jet\u00eb imazhi, aq m\u00eb mir\u00eb \u2014 m\u00eb pak vulnerabilitete t\u00eb mundshme, shkarkim m\u00eb t\u00eb shpejt\u00eb dhe k\u00ebshtu me radh\u00eb.<\/li>\n<li>Instancat b\u00ebhen efemere. <\/li>\n<\/ul>\n<p><\/p>\n<p>Mos harroni, thash\u00eb p\u00ebr kafsh\u00ebt sht\u00ebpiake vs bag\u00ebtit\u00eb? Disa koh\u00eb m\u00eb par\u00eb instancat ishin si kafsh\u00eb sht\u00ebpiake, nd\u00ebrsa tani jan\u00eb si bag\u00ebtia. Disa koh\u00eb m\u00eb par\u00eb ishte nj\u00eb monolit \u2014 nj\u00eb aplikacion. Tani jan\u00eb 100 mikrosh\u00ebrbime, 100 kontenier\u00eb. Disa kontenier\u00eb mund t\u00eb ken\u00eb 2-3 replikat. Nuk \u00ebsht\u00eb kaq e r\u00ebnd\u00ebsishme t\u00eb kontrollojm\u00eb \u00e7do kontenier. Ajo q\u00eb na intereson m\u00eb shum\u00eb \u00ebsht\u00eb disponueshm\u00ebria e sh\u00ebrbimit t\u00eb vet\u00eb: asaj q\u00eb b\u00ebn ky grup kontenier\u00ebsh. Kjo ndryshon qasjet n\u00eb monitorim.<\/p>\n<p><\/p>\n<p>N\u00eb vitet 2014-2015 ndodhi lul\u00ebzimi i Docker \u2014 asaj teknologjie q\u00eb do t\u00eb flasim tani.<\/p>\n<p><\/p>\n<p>Docker ka ndryshoi filozofin\u00eb dhe standardizoi paketimin e aplikacionit. Me Docker, ne mund t\u00eb paketojm\u00eb nj\u00eb aplikacion, ta d\u00ebrgojm\u00eb n\u00eb nj\u00eb depo, ta shkarkojm\u00eb nga aty dhe ta deploy-m\u00eb. <\/p>\n<p><\/p>\n<p>N\u00eb kontejnerin Docker ne p\u00ebrfshijm\u00eb gjith\u00e7ka q\u00eb na nevojitet, k\u00ebshtu q\u00eb zgjidhet problemi i var\u00ebsive. Docker garanton riprodhueshm\u00ebrin\u00eb. Mendoj se shum\u00eb njer\u00ebz jan\u00eb p\u00ebrballur me problemin e mosriprodhueshm\u00ebris\u00eb: gjith\u00e7ka funksionon, e d\u00ebrgon n\u00eb prodhim dhe atje ndalon s\u00eb funksionuari. Me Docker ky problem zhduket. N\u00ebse kontejneri yt Docker nis dhe b\u00ebn at\u00eb q\u00eb duhet t\u00eb b\u00ebj\u00eb, ka nj\u00eb mund\u00ebsi t\u00eb madhe q\u00eb ai t\u00eb nis\u00eb n\u00eb prodhim dhe atje t\u00eb b\u00ebj\u00eb t\u00eb nj\u00ebjt\u00ebn gj\u00eb.<\/p>\n<p><\/p>\n<blockquote>\n<h2 id=\"otstuplenie-pro-overhed\">Shkurtim mbi overhead<\/h2>\n<p>P\u00ebr overhead ka debate t\u00eb vazhdueshme. Disa mendojn\u00eb se Docker nuk sjell ngarkes\u00eb shtes\u00eb, sepse p\u00ebrdor b\u00ebrtham\u00ebn Linux dhe t\u00eb gjith\u00eb proceset e nevojshme p\u00ebr containerizimin. Thon\u00eb, 'n\u00ebse thoni se Docker \u00ebsht\u00eb overhead, at\u00ebher\u00eb edhe b\u00ebrthama Linux \u00ebsht\u00eb overhead'.<\/p>\n<p>Nga ana tjet\u00ebr, n\u00ebse zhytemi pak m\u00eb thell\u00eb, v\u00ebrtet n\u00eb Docker ka disa gj\u00ebra p\u00ebr t\u00eb cilat mund t\u00eb thuhet ndryshe se jan\u00eb overhead.<\/p>\n<p>E para \u00ebsht\u00eb namespace i PID. Kur vendosim nj\u00eb proces n\u00eb namespace, atij i jepet PID 1. N\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb, ky proces ka nj\u00eb PID tjet\u00ebr, i cili ndodhet n\u00eb namespace-n e host-it, jasht\u00eb kontejnerit. P\u00ebr shembull, n\u00ebse nis\u00ebm Nginx n\u00eb kontejner, ai b\u00ebhet PID 1 (procesi master). Dhe n\u00eb host, ai ka PID 12623. \u00cbsht\u00eb e v\u00ebshtir\u00eb t\u00eb thuhet se sa \u00ebsht\u00eb kjo overhead.<\/p>\n<p>S\u00eb dyti \u00ebsht\u00eb Cgroups. T\u00eb merremi me Cgroups p\u00ebr kujtes\u00ebn, pra mund\u00ebsia p\u00ebr t\u00eb kufizuar kujtes\u00ebn e nj\u00eb konteneri. Kur ajo aktivizohet, aktivizohen ndjesa, memory accounting: b\u00ebrthama duhet t\u00eb kuptoj\u00eb sa faqe jan\u00eb ndar\u00eb dhe sa ende jan\u00eb t\u00eb lira p\u00ebr k\u00ebt\u00eb kontenere. Kjo mund t\u00eb jet\u00eb overhead, por nuk kam par\u00eb studime t\u00eb sakta se si ndikon n\u00eb performanc\u00eb. As nuk kam v\u00ebrejtur q\u00eb nj\u00eb aplikacion i nisur n\u00eb Docker papritmas t\u00eb humbiste n\u00eb performanc\u00eb. <\/p>\n<p>Dhe nj\u00eb v\u00ebrejtje tjet\u00ebr mbi performanc\u00ebn. Disa parametra t\u00eb b\u00ebrtham\u00ebs p\u00ebrcillen nga host-i n\u00eb kontejner. N\u00eb ve\u00e7anti, disa parametra rrjeti. Prandaj, n\u00ebse d\u00ebshiron t\u00eb nis\u00ebsh di\u00e7ka me performanc\u00eb t\u00eb lart\u00eb n\u00eb Docker, p\u00ebr shembull, di\u00e7ka q\u00eb do t\u00eb p\u00ebrdor\u00eb intensivisht rrjetin, duhet t\u00eb ndryshosh k\u00ebta parameter. Nj\u00eb shembull \u00ebsht\u00eb nf_conntrack. <\/p><\/blockquote>\n<p><\/p>\n<h2 id=\"o-koncepcii-docker\">P\u00ebr konceptin e Docker<\/h2>\n<p><\/p>\n<p>Docker p\u00ebrb\u00ebhet nga disa komponent\u00eb: <\/p>\n<p><\/p>\n<ol>\n<li>Docker Daemon \u2014 ai \u00ebsht\u00eb motori i konteiner\u00ebve; \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b. <\/li>\n<li>Docker CII \u2014 utiliteti p\u00ebr menaxhimin e Docker.<\/li>\n<li>Dockerfile \u2014 udh\u00ebzimi se si t\u00eb nd\u00ebrtohet imazhi.<\/li>\n<li>Image \u2014 imazhi, nga i cili krijohet kontenieri.<\/li>\n<li>Container.<\/li>\n<li>Docker registry \u2014 depo imazhesh.<\/li>\n<\/ol>\n<p><\/p>\n<p>P\u00ebrskaj k\u00ebsaj duket k\u00ebshtu:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00c7far\u00eb \u00ebsht\u00eb Docker: nj\u00eb ekskurs i shkurt\u00ebr n\u00eb histori dhe abstraksionet kryesore.\" src=\"\/wp-content\/uploads\/2020\/08\/73ccc02c14485f72cfd7c64e3074f3b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00eb Docker_host punon Docker daemon, q\u00eb nis kontenier\u00ebt. Ka nj\u00eb Client, i cili d\u00ebrgon komanda: nd\u00ebrto imazhin, shkarko imazhin, nise kontenierin. Docker daemon shkon n\u00eb registry dhe i realizon ato. Docker-client mund t\u00eb lidhet si lokal (n\u00eb socket-in e unix-it), ashtu edhe p\u00ebrmes TCP nga nj\u00eb host t\u00eb larg\u00ebt.<\/p>\n<p><\/p>\n<p>Le t\u00eb kalojm\u00eb p\u00ebrmes secilit komponent.<\/p>\n<p><\/p>\n<p><u>Docker daemon (demon)<\/u> \u2014 \u00ebsht\u00eb pjesa server, ajo punon n\u00eb makin\u00ebn host: shkarkon imazhe dhe nis nga ato kontenier\u00eb, krijon rrjet midis kontenier\u00ebve, mbledh loge. Kur themi \"krijo imazh\", k\u00ebt\u00eb e b\u00ebn gjithashtu demon.<\/p>\n<p><\/p>\n<p><u>Docker CLI<\/u> \u2014 \u00ebsht\u00eb pjesa klient e Docker, utiliteti n\u00eb konsol\u00eb p\u00ebr t\u00eb punuar me demonin. E p\u00ebrs\u00ebris, ajo mund t\u00eb punoj\u00eb jo vet\u00ebm lokal, por edhe n\u00eb rrjet. <\/p>\n<p><\/p>\n<p><strong>Komandat baz\u00eb:<\/strong><\/p>\n<p><\/p>\n<p>docker ps \u2014 tregon kontenier\u00ebt q\u00eb tani po funksionojn\u00eb n\u00eb Docker-host.<br \/>\ndocker images \u2014 tregon imazhet e shkarkuara lokal.<br \/>\ndocker search  \u2014 k\u00ebrkimi i imazhit n\u00eb registry.<br \/>\ndocker pull  \u2014 shkarkoni imazhin nga registry n\u00eb makin\u00eb.<br \/>\ndocker build &lt;&gt; \u2014 nd\u00ebrto imazhin.<br \/>\ndocker run  \u2014 nise kontenierin.<br \/>\ndocker rm  \u2014 fshij kontenierin.<br \/>\ndocker logs  \u2014 loget e kontenierit.<br \/>\ndocker start\/stop\/restart  \u2014 puna me kontenierin.\n<\/p>\n<p>N\u00ebse ju e mbani mend me k\u00ebto komanda dhe do t'i p\u00ebrdorni ato me besim, at\u00ebher\u00eb mund t\u00eb thoni se e keni zot\u00ebruar Docker-in n\u00eb nivelin e p\u00ebrdoruesit n\u00eb 70%.<\/p>\n<p><\/p>\n<p><u>Dockerfile<\/u> 187\u044570<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u00c7far\u00eb \u00ebsht\u00eb Docker: nj\u00eb ekskurs i shkurt\u00ebr n\u00eb histori dhe abstraksionet kryesore.\" src=\"\/wp-content\/uploads\/2020\/08\/4d61b58d0d0d8b2e4ddbbfe573f34f7e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>K\u00ebshtu duket Dockerfile: n\u00eb t\u00eb majt\u00eb komandat, n\u00eb t\u00eb djatht\u00eb \u2014 argumentet. \u00c7do komand\u00eb q\u00eb ndodhet k\u00ebtu (dhe n\u00eb p\u00ebrgjith\u00ebsi shkruhet n\u00eb Dockerfile), krijon nj\u00eb shtres\u00eb t\u00eb re n\u00eb Image. <\/p>\n<p><\/p>\n<p>Edhe duke par\u00eb an\u00ebn e majt\u00eb, mund t\u00eb kuptojm\u00eb m\u00eb pak a m\u00eb shum\u00eb se \u00e7far\u00eb po ndodh. Ne themi: \"na krijo nj\u00eb dosje\" \u2014 ky \u00ebsht\u00eb nj\u00eb shtres\u00eb. \"B\u00ebje dosjen aktive\" \u2014 kjo \u00ebsht\u00eb nj\u00eb shtres\u00eb tjet\u00ebr, dhe k\u00ebshtu me radh\u00eb. Torta me shtresa e b\u00ebn jet\u00ebn m\u00eb t\u00eb leht\u00eb. N\u00ebse krijoj nj\u00eb Dockerfile tjet\u00ebr dhe ndryshoj di\u00e7ka n\u00eb rreshtin e fundit \u2014 nuk do t\u00eb ekzekutoj \"python\" \"main.py\", por di\u00e7ka tjet\u00ebr, ose do t\u00eb instaloja var\u00ebsi nga nj\u00eb skedar tjet\u00ebr \u2014 at\u00ebher\u00eb shtresat e m\u00ebparshme do t\u00eb ri p\u00ebrdoren, si cache.<\/p>\n<p><\/p>\n<p><u>ProHoster r\u0259yl\u0259ri<\/u> ditcoin1<\/p>\n<p><\/p>\n<p>Bitcoin-Cash<\/p>\n<p><\/p>\n<p><u>Ethereum<\/u> GPay <\/p>\n<p><\/p>\n<p><u>Litecoin<\/u> Ripple<\/p>\n<p><\/p>\n<p>USD-Tether<\/p>\n<p><\/p>\n<p>Zcash<noindex><a rel=\"nofollow\" href=\"http:\/\/to.slurm.io\/2patKQ\">visa1<\/a><\/noindex>\u00bb. <\/p>\n<p><\/p>\n<p><em>master2<\/em><\/p>\n<p>Burimi: <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.2 - 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\/sq\/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.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\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\/sq\/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":"Apple Pay","description":"Payeer Logo2","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/chto-takoe-docker-kratkij-ekskurs-v-istoriyu-i-osnovnye-abstrakczii","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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\/sq\/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\/sq\/wp-json\/wp\/v2\/posts\/91905","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=91905"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/91905\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/91906"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=91905"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=91905"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=91905"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}