{"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\/sq\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da","title":{"rendered":"A \u00ebsht\u00eb Docker nj\u00eb lod\u00ebr apo jo? Apo n\u00eb t\u00eb v\u00ebrtet\u00eb po?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>P\u00ebrsh\u00ebndetje t\u00eb gjith\u00ebve!<\/p>\n<p><\/p>\n<p>M\u00eb shum\u00eb do t\u00eb doja t\u00eb filloja menj\u00ebher\u00eb me tem\u00ebn, por \u00ebsht\u00eb m\u00eb e p\u00ebrshtatshme t\u00eb flas pak p\u00ebr historin\u00eb time:<\/p>\n<p><\/p>\n<h2>Hyrje<\/h2>\n<p><\/p>\n<p>Jam programues me p\u00ebrvoj\u00eb n\u00eb zhvillimin e aplikacioneve nj\u00ebfaq\u00ebshe frontend, scala\/java dhe nodejs n\u00eb server. <\/p>\n<p><\/p>\n<p>P\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb (me siguri dy \u2013 tre vjet), kam mbajtur mendimin se docker \u00ebsht\u00eb nj\u00eb bekim nga qielli dhe n\u00eb t\u00eb v\u00ebrtet\u00eb nj\u00eb mjet shum\u00eb t\u00eb shk\u00eblqyer dhe \u00e7do zhvillues duhet t\u00eb dij\u00eb ta p\u00ebrdor\u00eb. Dhe k\u00ebtu del se \u00e7do zhvillues duhet t\u00eb ket\u00eb docker n\u00eb makin\u00ebn e tij lokal. Po \u00e7't\u00eb them p\u00ebr mendimin tim, shfletoni listat e vendeve t\u00eb pun\u00ebs n\u00eb hh. N\u00eb \u00e7do t\u00eb dyt\u00eb p\u00ebrmendet docker dhe n\u00ebse e zot\u00ebroni at\u00eb, do t\u00eb jet\u00eb nj\u00eb avantaj m\u00eb shum\u00eb p\u00ebr ju \ud83d\ude09<\/p>\n<p><\/p>\n<p>N\u00eb rrug\u00ebn time kam takuar shum\u00eb njer\u00ebz me qasje t\u00eb ndryshme ndaj docker dhe ekosistemit t\u00eb tij. Disa thonin se \u00ebsht\u00eb nj\u00eb gj\u00eb e dobishme q\u00eb garanton nd\u00ebrlidhshm\u00ebrin\u00eb n\u00ebp\u00ebr platforma. T\u00eb tjer\u00ebt nuk kuptonin pse duhet t\u00eb drejtoheshin n\u00eb konteiner\u00eb dhe \u00e7far\u00eb fitimi sjell kjo, disa t\u00eb tjer\u00eb nuk u interesonin fare (thjesht shkruanin kodin dhe iknin n\u00eb sht\u00ebpi \u2014 i admiroj, p\u00ebrsa i p\u00ebrket atyre \ud83d\ude42)<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Arsyet e p\u00ebrdorimit<\/h2>\n<p><\/p>\n<p>Pse p\u00ebrdora docker? Ndoshta p\u00ebr k\u00ebto arsye:<\/p>\n<p><\/p>\n<ul>\n<li>ekzekutimi i baz\u00ebs s\u00eb t\u00eb dh\u00ebnave, 99% e aplikacioneve i p\u00ebrdorin ato<\/li>\n<li>ekzekutimi i nginx p\u00ebr shp\u00ebrndarjen e frontend dhe p\u00ebr proxy n\u00eb backend<\/li>\n<li>mund t\u00eb paketosh aplikacionin n\u00eb nj\u00eb imazh docker, k\u00ebshtu q\u00eb aplikacioni im do t\u00eb funksionoj\u00eb kudo ku ka docker, problemi i shp\u00ebrndarjes zgjidhet menj\u00ebher\u00eb<\/li>\n<li>zbulimi i sh\u00ebrbimit nga kutia, mund t\u00eb krijosh mikrosh\u00ebrbime, \u00e7do konteiner (i lidhur n\u00eb nj\u00eb rrjet t\u00eb p\u00ebrbashk\u00ebt) leht\u00ebsisht mund t\u00eb arrij\u00eb tjetrin p\u00ebrmes aliasit, shum\u00eb e p\u00ebrshtatshme<\/li>\n<li>\u00ebsht\u00eb arg\u00ebtuese t\u00eb krijosh nj\u00eb kontejner dhe t\u00eb \"loz\u00ebsh\" me t\u00eb.<\/li>\n<\/ul>\n<p><\/p>\n<h2>\u00c7far\u00eb nuk m\u00eb ka p\u00eblqyer kurr\u00eb te docker:<\/h2>\n<p><\/p>\n<ul>\n<li>p\u00ebr t\u00eb cilin aplikacioni im t\u00eb funksionoj\u00eb, k\u00ebrkohet docker vet\u00eb n\u00eb server. Po pse ma duhet kjo, n\u00ebse aplikacionet e mia funksionojn\u00eb n\u00eb jre ose n\u00eb nodejs dhe mjedisi p\u00ebr to tashm\u00eb \u00ebsht\u00eb n\u00eb server?<\/li>\n<li>n\u00ebse d\u00ebshiroj t\u00eb ekzekutoj imazhin tim (privat) t\u00eb nd\u00ebrtuar lokal n\u00eb nj\u00eb server t\u00eb distancuar, atij i nevojitet nj\u00eb depo docker e vetme, duhet q\u00eb diku t\u00eb funksiononte registry dhe gjithashtu duhet t\u00eb konfiguroj https, sepse docker cli funksionon vet\u00ebm p\u00ebrmes https. Oh, sikur\u2026 ka mund\u00ebsi, sigurisht, ta ruaj imazhin lokal p\u00ebrmes <code>docker save<\/code> dhe p\u00ebrmes scp thjesht t\u00eb d\u00ebrgosh imazhin... Por kjo k\u00ebrkon shum\u00eb l\u00ebvizje. Dhe p\u00ebr m\u00eb tep\u00ebr, duket si nj\u00eb zgjidhje \"t\u00eb p\u00ebrkohshme\" derisa t\u00eb ket\u00eb repository t\u00eb vetin.<\/li>\n<li><code>docker-compose<\/code>Ai \u00ebsht\u00eb i nevojsh\u00ebm vet\u00ebm p\u00ebr t\u00eb nisur kontejner\u00ebt. Dhe kaq. Nudi ask\u00ebnd tjet\u00ebr. <code>Docker-compose<\/code> K\u00ebto kan\u00eb shum\u00eb versione t\u00eb skedar\u00ebve t\u00eb tyre, sintaks\u00ebn e tyre. Sa do q\u00eb t\u00eb jet\u00eb deklarative, nuk dua t\u00eb lexoj dokumentacionin e tyre. Nuk do m\u00eb nevojitet asgj\u00eb diku tjet\u00ebr.<\/li>\n<li>Kur punojn\u00eb n\u00eb ekip, shumica e njer\u00ebzve i shkruajn\u00eb Dockerfile shum\u00eb keq, nuk kuptojn\u00eb si e menaxhohet cache, shtojn\u00eb n\u00eb imazh gjith\u00e7ka q\u00eb nevojitet dhe q\u00eb nuk nevojitet, trash\u00ebgojn\u00eb nga imazhe q\u00eb nuk jan\u00eb n\u00eb dockerhub ose n\u00eb nj\u00eb depo private, krijojn\u00eb disa <code>docker-compose<\/code> skedar\u00ebt me bazat e t\u00eb dh\u00ebnave nuk q\u00ebndrojn\u00eb. Megjithat\u00eb, zhvilluesit e deklarojn\u00eb me krenari se docker \u00ebsht\u00eb i shk\u00eblqyer, gjith\u00e7ka funksionon n\u00eb nivel lokal dhe HR-ja duhet t\u00eb shkruaj\u00eb n\u00eb shpalljet e vendeve t\u00eb pun\u00ebs: \"Ne p\u00ebrdorim docker dhe na nevojitet nj\u00eb kanditat me k\u00ebt\u00eb p\u00ebrvoj\u00eb pune.\"<\/li>\n<li>p\u00ebrher\u00eb e ndjekin mendimet p\u00ebr ngritjen e \u00e7do gj\u00ebje n\u00eb docker: postgresql, kafka, redis. Sa keq q\u00eb gjith\u00e7ka nuk funksionon n\u00eb kontejner\u00eb, dhe jo gjith\u00e7ka \u00ebsht\u00eb leht\u00eb p\u00ebr t'u konfiguruar dhe nisur. Kjo mb\u00ebshtetet nga zhvillues jasht\u00eb, dhe jo nga vet\u00eb ofruesit. Dhe, p\u00ebr m\u00eb tep\u00ebr, shfaqet nj\u00eb pyetje e menj\u00ebhershme, pse ofruesit nuk shqet\u00ebsohen p\u00ebr mb\u00ebshtetje t\u00eb produkteve t\u00eb tyre n\u00eb docker, ndoshta din\u00eb di\u00e7ka?<\/li>\n<li>p\u00ebrher\u00eb lind pyetja p\u00ebr q\u00ebndrueshm\u00ebrin\u00eb e t\u00eb dh\u00ebnave t\u00eb kontejner\u00ebve. Dhe k\u00ebtu mendon, a duhet ta lidhi thjesht nj\u00eb direktori hosti apo t\u00eb krijoj nj\u00eb docker volume ose t\u00eb b\u00ebj nj\u00eb data container i cili tani <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> do t\u00eb krijoj\u00eb t\u00eb dh\u00ebnat thjesht n\u00eb ndonj\u00eb <code>\/usr\/*<\/code> dhe do t\u00eb ket\u00eb histori t\u00eb ngjashme me uid dhe gid si n\u00eb rastin e par\u00eb. N\u00ebse aktivizon nj\u00eb komponent t\u00eb jasht\u00ebm, duhet t\u00eb lexosh dokumentacionin dhe t\u00eb k\u00ebrkosh p\u00ebrgjigjen e pyetjes: \"n\u00eb cilat direktor\u00eb t\u00eb kontejnerit shkruan skedar\u00ebt komponenti?\"<\/li>\n<\/ul>\n<p>M\u00eb ka shqet\u00ebsuar gjithmon\u00eb se duhet t\u00eb merrem shum\u00eb gjat\u00eb me docker-in <strong>n\u00eb faz\u00ebn fillestare<\/strong>: un\u00eb po mendoja se si t\u00eb nisa kontejner\u00ebt, nga cilat imazhe t\u00eb nisja, b\u00ebja Makefile, t\u00eb cilat p\u00ebrmbanin aliazhe p\u00ebr komandat e gjata t\u00eb docker. Nuk e kam duruar docker-compose, sepse nuk kisha d\u00ebshir\u00eb t\u00eb m\u00ebsoja nj\u00eb tjet\u00ebr mjet t\u00eb ekosistemit docker. Dhe <code>docker-compose up<\/code> m\u00eb ka shqet\u00ebsuar, sidomos, n\u00ebse aty kishin <code>build<\/code> strukturat e tjera, e jo imazhe t\u00eb mbledhura p\u00ebrpara. \u00c7far\u00ebdo q\u00eb doja, ishte t\u00eb b\u00ebja produktin efikasisht dhe shpejt. Por nuk mund t\u00eb p\u00ebrmir\u00ebsoja p\u00ebrdorimin e docker-it.<\/p>\n<p><\/p>\n<h2>Njohja me Ansible<\/h2>\n<p><\/p>\n<p>Koh\u00ebt e fundit (tre muaj m\u00eb par\u00eb), kam punuar me nj\u00eb ekip DevOps, pothuajse \u00e7do an\u00ebtar i t\u00eb cilit kishte nj\u00eb q\u00ebndrim negativ ndaj docker. P\u00ebr arsyet:<\/p>\n<p><\/p>\n<ul>\n<li>docker menaxhon iptables (edhe pse mund ta \u00e7aktivizosh n\u00eb daemon.json)<\/li>\n<li>Docker \u00ebsht\u00eb i domosdosh\u00ebm dhe nuk do ta nisim n\u00eb prodhim<\/li>\n<li>N\u00ebse docker daemon bie, at\u00ebher\u00eb gjithashtu bien t\u00eb gjith\u00eb kontejner\u00ebt me infrastruktur\u00ebn<\/li>\n<li>Nuk ka nevoj\u00eb p\u00ebr docker<\/li>\n<li>Pse docker kur ka Ansible dhe makina virtuale?<\/li>\n<\/ul>\n<p><\/p>\n<p>N\u00eb at\u00eb pun\u00eb un\u00eb u takova me nj\u00eb mjet tjet\u00ebr - Ansible. Disa her\u00eb kam d\u00ebgjuar p\u00ebr t\u00eb, por nuk kisha provuar t\u00eb shkruaja playbooks t\u00eb mia. Tani kam filluar t\u00eb shkruaj detyrat e mia dhe k\u00ebtu vizioni im u ndryshua plot\u00ebsisht! Sepse un\u00eb e kuptova: Ansible ka module p\u00ebr t\u00eb ekzekutuar t\u00eb nj\u00ebjtit kontejner\u00eb docker, nd\u00ebrtimin e imazheve, rrjete etj., dhe gjithashtu mund t\u00eb ekzekutoni kontejner\u00ebt jo vet\u00ebm lokal, por edhe n\u00eb servera t\u00eb larg\u00ebt! G\u00ebzimi im ishte i pakufizuar - un\u00eb gjeta nj\u00eb mjet t\u00eb P\u00cbRSHTATSH\u00cbM dhe hodha jasht\u00eb Makefile dhe docker-compose skedar\u00ebt e mi, t\u00eb cilat u z\u00ebvend\u00ebsuan me detyrat yaml. Kodi u reduktua p\u00ebr shkak t\u00eb p\u00ebrdorimit t\u00eb nd\u00ebrtimeve t\u00eb tipit <code>loop<\/code>, <code>when<\/code>, etj.<\/p>\n<p><\/p>\n<h2>Docker p\u00ebr t\u00eb ekzekutuar komponent\u00eb t\u00eb jasht\u00ebm si databaza<\/h2>\n<p><\/p>\n<p>S\u00eb fundmi kam njohur tunelat ssh. Doli se \u00ebsht\u00eb shum\u00eb e thjesht\u00eb t\u00eb \"kalosh\" portin e serverit t\u00eb larg\u00ebt n\u00eb portin lokal. Serveri i larg\u00ebt mund t\u00eb jet\u00eb si nj\u00eb makin\u00eb n\u00eb re, ashtu edhe nj\u00eb makin\u00eb virtuale q\u00eb ekzekutohet n\u00eb VirtualBox. N\u00ebse mua ose kolegut tim i nevojitet nj\u00eb db (ose ndonj\u00eb komponent tjet\u00ebr i jasht\u00ebm), thjesht mund t\u00eb aktivizojm\u00eb serverin q\u00eb e ka k\u00ebt\u00eb komponent dhe ta ndalim kur serveri nuk \u00ebsht\u00eb i nevojsh\u00ebm. Kalimi i portave jep nj\u00eb efekt t\u00eb ngjash\u00ebm si nj\u00eb db e aktivizuar n\u00eb nj\u00eb kontejner docker.<\/p>\n<p><\/p>\n<p>Kjo komand\u00eb shfryt\u00ebzon portin tim lokal n\u00eb serverin e larg\u00ebt me postgresql:<\/p>\n<p><\/p>\n<blockquote><p>ssh -L 9000:localhost:5432 user@example.com<\/p><\/blockquote>\n<p>P\u00ebrdorimi i serverit t\u00eb larg\u00ebt zgjidh problemin e zhvillimit n\u00eb grup. Nj\u00eb server i till\u00eb mund t\u00eb p\u00ebrdoret nga disa zhvillues, ata nuk kan\u00eb nevoj\u00eb t\u00eb din\u00eb t\u00eb konfigurojn\u00eb postgresql, t\u00eb kuptojn\u00eb docker dhe kompleksitete t\u00eb tjera. N\u00eb serverin e larg\u00ebt mund t\u00eb instalohet e nj\u00ebjta databaz\u00eb n\u00eb docker, n\u00ebse vendosja e versionit specifik \u00ebsht\u00eb e v\u00ebshtir\u00eb. Gjith\u00e7ka q\u00eb do t\u00eb nevojitet p\u00ebr zhvilluesit \u00ebsht\u00eb t\u00eb ofrohet qasje ssh!<\/p>\n<p><\/p>\n<p>Koh\u00ebt e fundit lexova se tunelimi SSH \u00ebsht\u00eb funksionim i kufizuar i nj\u00eb VPN normale! Mund t\u00eb konfiguroni thjesht OpenVPN ose realizime t\u00eb tjera t\u00eb VPN, t\u00eb konfiguroni infrastruktur\u00ebn dhe t'ia jepni zhvilluesve. Kjo \u00ebsht\u00eb aq e shk\u00eblqyer!<\/p>\n<p><\/p>\n<p>Fatke, AWS, GoogleCloud, dhe t\u00eb tjer\u00eb ofrojn\u00eb nj\u00eb vit p\u00ebrdorimi falas, prandaj shfryt\u00ebzojini! Jan\u00eb shum\u00eb t\u00eb lira, n\u00ebse i fikni kur nuk p\u00ebrdoren. Un\u00eb gjithmon\u00eb kam menduar p\u00ebr \u00e7far\u00eb do t\u00eb m\u00eb duhet nj\u00eb server i larg\u00ebt si gcloud, duket se e kam gjetur.<\/p>\n<p><\/p>\n<p>Si nj\u00eb makin\u00eb virtuale n\u00eb lokal, mund t\u00eb p\u00ebrdorni t\u00eb nj\u00ebjtin Alpine q\u00eb p\u00ebrdoret aktivisht n\u00eb kontejner\u00ebt docker. Ose ndonj\u00eb distro tjet\u00ebr t\u00eb leht\u00eb p\u00ebr t\u00eb ngarkuar makin\u00ebn m\u00eb shpejt.<\/p>\n<p><\/p>\n<p>P\u00ebrfundim: \u00ebsht\u00eb e mundur dhe e nevojshme t\u00eb nisin databaza dhe p\u00ebrfitime t\u00eb tjera infrastrukturore n\u00eb servera t\u00eb larg\u00ebt ose n\u00eb virtualbox. M\u00eb nevojitet docker p\u00ebr k\u00ebto q\u00ebllime.<\/p>\n<p><\/p>\n<h2>Pak rreth imazheve docker dhe shp\u00ebrndarjeve<\/h2>\n<p><\/p>\n<p>T\u00eb kam shkruar m\u00eb par\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/443136\/\">artikull<\/a><\/noindex> n\u00eb t\u00eb cilin doja t\u00eb p\u00ebrcillja se p\u00ebrdorimi i imazheve docker nuk jep asnj\u00eb garanci. Imazhet docker jan\u00eb t\u00eb nevojshme vet\u00ebm p\u00ebr t\u00eb krijuar nj\u00eb kontejner docker. N\u00ebse e mbani at\u00eb si imazh docker, at\u00ebher\u00eb po e mbani at\u00eb n\u00eb p\u00ebrdorim kontejneresh docker dhe do t\u00eb jeni vet\u00ebm me ta.<\/p>\n<p><\/p>\n<p>A keni par\u00eb ndonj\u00ebher\u00eb q\u00eb zhvilluesit e softuerit t\u00eb portojn\u00eb produktet e tyre vet\u00ebm si imazhe docker?<br \/>\nRezultati i shumic\u00ebs s\u00eb produkteve \u00ebsht\u00eb skedar\u00eb binar\u00eb p\u00ebr nj\u00eb platform\u00eb t\u00eb caktuar, e cila thjesht shtohet n\u00eb imazhin docker q\u00eb trash\u00ebgon nga platforma e nevojshme. \u00c7far\u00eb keni menduar, pse ka kaq shum\u00eb imazhe t\u00eb ngjashme n\u00eb dockerhub? Shkruani p\u00ebr shembull nginx, do t\u00eb shihni 100500 imazhe nga njer\u00ebz t\u00eb ndrysh\u00ebm. K\u00ebta njer\u00ebz nuk e zhvilluan vet\u00eb nginx, ata thjesht e shtuan nginx zyrtar n\u00eb imazhin e tyre docker dhe e pasuruan me konfigurimet e tyre p\u00ebr leht\u00ebsimin e nisjes s\u00eb kontejner\u00ebve. <\/p>\n<p><\/p>\n<p>N\u00eb p\u00ebrgjith\u00ebsi, mund ta ruani thjesht n\u00eb tgz, n\u00ebse dikujt i nevojitet ta nis\u00eb k\u00ebt\u00eb n\u00eb docker, le t\u00eb shtoj\u00eb tgz n\u00eb Dockerfile, t\u00eb trash\u00ebgoj\u00eb nga ambienti i nevojsh\u00ebm dhe t\u00eb krijoj\u00eb p\u00ebrfitime t\u00eb tjera q\u00eb nuk ndryshojn\u00eb aplikacionin n\u00eb tgz. Ai q\u00eb do t\u00eb krijoj\u00eb imazhin docker do t\u00eb dij\u00eb se \u00e7far\u00eb \u00ebsht\u00eb ky tgz dhe \u00e7far\u00eb i nevojitet p\u00ebr t\u00eb punuar. K\u00ebshtu e p\u00ebrdor docker un\u00eb. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kondaurovDev\/dockerfile\">k\u00ebtu<\/a><\/noindex><\/p>\n<p><\/p>\n<p>P\u00ebrfundim: nuk m\u00eb nevojitet docker registry, do t\u00eb p\u00ebrdor ndonj\u00eb S3 ose thjesht nj\u00eb ruajtje skedari si google drive\/dropbox.<\/p>\n<p><\/p>\n<h2>Docker n\u00eb CI<\/h2>\n<p><\/p>\n<p>T\u00eb gjitha kompanit\u00eb ku kam punuar jan\u00eb t\u00eb ngjashme me nj\u00ebra-tjetr\u00ebn. Ato zakonisht jan\u00eb produktive. Do t\u00eb thot\u00eb se kan\u00eb nj\u00eb aplikacion, nj\u00eb grup teknologjish (ndoshta dy - tre gjuh\u00eb programimi).<\/p>\n<p><\/p>\n<p>K\u00ebto kompani p\u00ebrdorin docker n\u00eb server\u00ebt e tyre ku iniciohet procesi CI. Pyetja \u00ebsht\u00eb \u2014 pse \u00ebsht\u00eb e nevojshme t\u00eb nd\u00ebrtohen projektet n\u00eb nj\u00eb konteiner docker n\u00eb server\u00ebt e tyre? Pse t\u00eb mos p\u00ebrgatitet nj\u00eb mjedis p\u00ebr nd\u00ebrtim, p\u00ebr shembull t\u00eb shkruhet nj\u00eb playbook Ansible q\u00eb do t\u00eb instalonte versionet e nevojshme t\u00eb nodejs, php, jdk, t\u00eb kopjonte \u00e7el\u00ebsat ssh dhe t\u00eb tjera n\u00eb serverin ku do t\u00eb b\u00ebhej nd\u00ebrtimi? <\/p>\n<p><\/p>\n<p>Tani kuptoj se kjo \u00ebsht\u00eb si t\u00eb t\u00eb godas\u00ebsh veten n\u00eb k\u00ebmb\u00eb, sepse docker nuk sjell asnj\u00eb p\u00ebrfitim me izolimin e tij. Problemet me CI n\u00eb docker me t\u00eb cilat jam p\u00ebrballur:<\/p>\n<p><\/p>\n<ul>\n<li>p\u00ebrs\u00ebri nevojitet nj\u00eb imazh docker p\u00ebr nd\u00ebrtimin. duhet t\u00eb k\u00ebrkosh nj\u00eb imazh ose t\u00eb shkruash dockerfile-n\u00eb t\u00ebnde.<\/li>\n<li>90% \u00ebsht\u00eb e nevojshme q\u00eb t\u00eb kalosh ndonj\u00eb \u00e7el\u00ebs ssh, t\u00eb dh\u00ebna sekrete, q\u00eb nuk d\u00ebshiron t'i shkruash n\u00eb imazhin docker.<\/li>\n<li>konteineri krijohet dhe vdes, humbasin t\u00eb gjitha cache-t me t\u00eb. Nd\u00ebrtimi tjet\u00ebr do t\u00eb shkarkoj\u00eb p\u00ebrs\u00ebri t\u00eb gjitha var\u00ebsit\u00eb e projektit, dhe kjo \u00ebsht\u00eb e gjat\u00eb dhe jo efikase, nd\u00ebrsa koha \u00ebsht\u00eb para.<\/li>\n<\/ul>\n<p><\/p>\n<p>Zhvilluesit nuk nd\u00ebrtojn\u00eb projekte n\u00eb konteiner\u00eb docker (dikur isha nj\u00eb fanatik i till\u00eb, m\u00eb vjen keq p\u00ebr veten time n\u00eb t\u00eb kaluar\u00ebn xD). N\u00eb java ka mund\u00ebsi p\u00ebr t\u00eb pasur disa versione dhe p\u00ebr t\u00eb nd\u00ebrruar me nj\u00eb komand\u00eb n\u00eb at\u00eb q\u00eb nevojitet tani. N\u00eb nodejs \u00ebsht\u00eb po e nj\u00ebjta gj\u00eb, ekziston nvm.<\/p>\n<p><\/p>\n<h2>P\u00ebrfundimi<\/h2>\n<p><\/p>\n<p>Un\u00eb mendoj se docker \u00ebsht\u00eb nj\u00eb mjet shum\u00eb i fuqish\u00ebm dhe fleksib\u00ebl, n\u00eb k\u00ebt\u00eb q\u00ebndrim, \u00ebsht\u00eb nj\u00eb disavantazh (ting\u00ebllon \u00e7uditsh\u00ebm, apo jo?). Me ndihm\u00ebn e tij, kompanit\u00eb leht\u00eb \"var\u00ebn\" n\u00eb t\u00eb, duke e p\u00ebrdorur aty ku \u00ebsht\u00eb e nevojshme dhe aty ku nuk \u00ebsht\u00eb. Zhvilluesit aktivizojn\u00eb kontejner\u00ebt e tyre, nj\u00eb ambient t\u00eb vetin, pastaj e gjith\u00eb kjo kalon n\u00eb CI, prodhim. Ekipi DevOps shkruan disa bi\u00e7ikleta p\u00ebr t\u00eb aktivizuar k\u00ebto kontejner\u00eb.<\/p>\n<p><\/p>\n<p>P\u00ebrdorni docker vet\u00ebm n\u00eb <strong>faz\u00ebn m\u00eb t\u00eb fundit<\/strong> n\u00eb procesin tuaj t\u00eb pun\u00ebs, mos e sillni at\u00eb n\u00eb projekt n\u00eb fillim. Nuk do t\u00eb zgjidh\u00eb problemet tuaja t\u00eb biznesit. Ai vet\u00ebm do t\u00eb zhvendos\u00eb problemet n\u00eb NJ\u00cb NIVEL T\u00cb DYT\u00cb dhe do t\u00eb ofroj\u00eb opsionet e tij p\u00ebr zgjidhje, ju do t\u00eb b\u00ebni pun\u00eb t\u00eb dyfishta.<\/p>\n<p><\/p>\n<p><strong><em>Kur \u00ebsht\u00eb e nevojshme docker<\/em><\/strong>: arrita n\u00eb p\u00ebrfundimin se docker \u00ebsht\u00eb shum\u00eb i mir\u00eb n\u00eb optimizimin e procesit t\u00eb vendosur, por jo n\u00eb nd\u00ebrtimin e funksionalitetit themelor.<\/p>\n<p><\/p>\n<p>N\u00ebse vendosni t\u00eb p\u00ebrdorni docker, at\u00ebher\u00eb:<\/p>\n<p><\/p>\n<ul>\n<li>jini jasht\u00ebzakonisht t\u00eb kujdessh\u00ebm<\/li>\n<li>mos i impononi p\u00ebrdorimin e docker zhvilluesve<\/li>\n<li>lokalizoni p\u00ebrdorimin e tij n\u00eb nj\u00eb vend, mos e shp\u00ebrndani n\u00eb t\u00eb gjitha repozitor\u00ebt Dockefile dhe docker-compose<\/li>\n<\/ul>\n<p><\/p>\n<p>PS:<\/p>\n<p><\/p>\n<ul>\n<li>Sapo kam hasur n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/www.packer.io\/\">packer<\/a><\/noindex> dhe thon\u00eb se punon shum\u00eb mir\u00eb me Ansible dhe lejon unifikimin e procesit t\u00eb nd\u00ebrtimit t\u00eb imazheve (p\u00ebrfshir\u00eb imazhet docker)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.smashcompany.com\/technology\/docker-is-a-dangerous-gamble-which-we-will-regret\">po ashtu p\u00ebr docker, nj\u00eb artikull interesante<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Faleminderit q\u00eb e lexuat, ju uroj zgjidhje transparente n\u00eb pun\u00ebt tuaja dhe dite produktive n\u00eb pun\u00eb!<\/p>\n<p>Burimi: <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.2 - 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\/sq\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da\" \/>\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\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\/sq\/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 a \u00ebsht\u00eb nj\u00eb lod\u00ebr apo jo? Apo ndoshta po?","description":"P\u00ebrsh\u00ebndetje t\u00eb gjith\u00ebve! M\u00eb p\u00eblqen shum\u00eb t\u00eb filloj menj\u00ebher\u00eb me tem\u00ebn, por do t\u00eb ishte m\u00eb e p\u00ebrshtatshme t\u00eb flas pak p\u00ebr historin\u00eb time: Hyrje Jam nj\u00eb programues me p\u00ebrvoj\u00eb n\u00eb zhvillimin e frontend.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da","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\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\/sq\/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\/sq\/wp-json\/wp\/v2\/posts\/31641","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=31641"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/31641\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=31641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=31641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=31641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}