LEMP<\/a>. Jeden z v\u00fdvoj\u00e1rov ale pou\u017e\u00edva Windows, in\u00fd zase MacOS. Nemusia si v\u0161ak in\u0161talova\u0165 ani virtualizova\u0165 kompletn\u00fd opera\u010dn\u00fd syst\u00e9m Ubuntu 20.04 a nastavova\u0165 LEMP, preto\u017ee Docker m\u00e1 predpripraven\u00fd obraz (image) presne pre potreby spom\u00ednanej aplik\u00e1cie.<\/p>\n\n\n\nDocker v\u00fdrazne u\u013eah\u010duje a automatizuje v\u00fdvoj softv\u00e9ru, jeho distrib\u00faciu a prev\u00e1dzku. <\/p>\n\n\n\n
Za hlavn\u00fdm v\u00fdvojom stoj\u00ed spolo\u010dnos\u0165 Docker Inc. ktor\u00fa zalo\u017eili Solomon Hykes a Sebastien Pahl po\u010das Y Combinator Summer 2010, \u010do je startup inkub\u00e1tor a spustili ju v roku 2011. Hykes za\u010dal Docker projekt vo Franc\u00fazsku ako intern\u00fd projekt pre dotCloud, \u010do bola platform-as-a-service spolo\u010dnos\u0165.<\/p>\n\n\n\n
Docker bol verjenosti predstaven\u00fd v Santa Clara na konferencii PyCon v roku 2013. Ako open-source bol uvo\u013enen\u00fd v marci 2013. V tom \u010dase pou\u017e\u00edval LXC, no nesk\u00f4r pre\u0161iel vo verzii 0.9 na vlastn\u00e9 behov\u00e9 prostredie nap\u00edsan\u00e9 v jazyku Go (Golang). V roku 2017 Docker vytvoril projekt Moby, ktor\u00fd sl\u00fa\u017ei na v\u00fdskum a testovanie nov\u00fdch funkcii, z\u00e1rove\u0148 ide o upstream pre Docker.<\/p>\n\n\n\n
Z\u00e1kladn\u00e9 pojmy<\/h2>\n\n\n\n Koncept projektu Docker je postaven\u00fd na nieko\u013ek\u00fdch pilieroch, ktor\u00e9 si tu kr\u00e1tko predstav\u00edme a podrobnej\u0161ie presk\u00famame v \u010fal\u0161\u00edch \u010dastiach tohto seri\u00e1lu.<\/p>\n\n\n\n
Obraz (Image)<\/h3>\n\n\n\n Ide o \u0161abl\u00f3nu, ktor\u00e1 je ur\u010den\u00e1 iba na \u010d\u00edtanie a je ulo\u017een\u00e1 v registri ako napr\u00edklad hub.docker.com<\/code>. Pod\u013ea tejto \u0161abl\u00f3ny Docker vytvor\u00ed kontajner<\/code> alebo viacero kontajnerov. Bli\u017e\u0161ia \u0161pecifik\u00e1cia, pod\u013ea ktorej m\u00e1 Docker z obrazu vytvori\u0165 kontajner, sa zapisuje do textov\u00e9ho s\u00faboru s n\u00e1zvom Dockerfile<\/code>.<\/p>\n\n\n\nDockerfile<\/h3>\n\n\n\n Ide o textov\u00fd s\u00fabor s n\u00e1zvom Dockerfile<\/code>, do ktor\u00e9ho p\u00ed\u0161eme n\u00e1vod a pr\u00edkazy potrebn\u00e9 na vytvorenie kontajneru. Takto napr\u00edklad nech\u00e1me vytvori\u0165 kontajner, ktor\u00fd z registra hub.docker.com<\/code> stiahne a spust\u00ed opera\u010dn\u00fd syst\u00e9m Ubuntu v najnov\u0161ej verzii (prv\u00fd riadok) a n\u00e1sledne v \u0148om aktualizuje v\u0161etok softv\u00e9r a nain\u0161taluje n\u00e1stroje potrebn\u00e9 na zostavovanie ostatn\u00fdch n\u00e1strojov (druh\u00fd riadok):<\/p>\n\n\n\nFROM ubuntu:latest<\/pre>\n\n\n\nRUN apt-get -y update && apt-get -y upgrade && apt-get install -y build-essential<\/pre>\n\n\n\nV prie\u010dinku, kde sa nach\u00e1dza textov\u00fd s\u00fabor Dockerfile<\/code>, teraz v termin\u00e1li spust\u00edme kontajner z obrazu (image) ubuntu.latest:<\/p>\n\n\n\ndocker run -i -t ubuntu \/bin\/bash<\/pre>\n\n\n\nTakto spusten\u00fd kontajner s n\u00e1zvom ubuntu<\/code> v termin\u00e1li zobraz\u00ed bash<\/code> a m\u00f4\u017eeme za\u010da\u0165 p\u00edsa\u0165 pr\u00edkazy do pr\u00e1ve na\u010d\u00edtan\u00e9ho opera\u010dn\u00e9ho syst\u00e9m Ubuntu.<\/p>\n\n\n\nV produkcii odpor\u00fa\u010dme nepou\u017e\u00edva\u0165 obrazy s ozna\u010den\u00edm :latest<\/code>, ale konkr\u00e9tne verzie.<\/p>\n\n\n\nKontajner (Container)<\/h3>\n\n\n\n Ide o spusten\u00fd obraz (image) – napr\u00edklad ten, ktor\u00fd sme vy\u0161\u0161ie spustili pr\u00edkazom docker run -i -t ubuntu \/bin\/bash<\/code>. Kontajnery s\u00fa \u00faplne alebo \u010diasto\u010dne izolovan\u00e9 od hostite\u013esk\u00e9ho opera\u010dn\u00e9ho syst\u00e9mu a m\u00f4\u017eeme ich vytvori\u0165, spusti\u0165, zastavi\u0165, presun\u00fa\u0165 alebo zmaza\u0165. <\/p>\n\n\n\nObsah (Volume)<\/h3>\n\n\n\n Kontajnery s\u00fa svojim konceptom bezstavov\u00e9 a neperzistetn\u00e9. To znamen\u00e1, \u017ee o ich d\u00e1ta prich\u00e1dzame po ich zru\u0161en\u00ed. V re\u00e1lnom pou\u017eit\u00ed ale \u010dasto potrebujeme s d\u00e1tami na \u00farovni adres\u00e1rov a s\u00faborov pracova\u0165. Obsah<\/code> (Volume) umo\u017enuje d\u00e1ta z hostite\u013esk\u00e9ho syst\u00e9mu pripoji\u0165 ku kontajneru. Je to princ\u00edp dos\u0165 podobn\u00fd mount<\/code> v Linuxov\u00fdch syst\u00e9moch.<\/p>\n\n\n\nSie\u0165 (Network)<\/h3>\n\n\n\n Sie\u0165 v docker kontajneroch sl\u00fa\u017ei na jeho prepojenie s hostite\u013esk\u00fdm syst\u00e9mom. Napr\u00edklad potrebujeme komunik\u00e1ciu webov\u00e9ho servera Nginx otvori\u0165 na porte \u010d\u00edslo 80 v kontajneri a prepoji\u0165 ju na port \u010d\u00edslo 8080 na hostite\u013eskom po\u010d\u00edta\u010di.<\/p>\n\n\n\n
Docker umo\u017e\u0148uje vytv\u00e1ranie sieti medzi konkr\u00e9tnymi kontajnermi, \u010do m\u00e1 v\u00fdhodu pri komplexnej\u0161\u00edch syst\u00e9moch.<\/p>\n\n\n\n
Docker Compose<\/h3>\n\n\n\n Ide o n\u00e1stroj, v\u010faka ktor\u00e9mu m\u00f4\u017eeme v\u00fdrazne zjednodu\u0161i\u0165 vytv\u00e1ranie a nastavenie komplexn\u00e9ho prostredia z viacer\u00fdch kontajnerov, sieti a d\u00e1t. Nastavenia pre n\u00e1stroj Compose uklad\u00e1me do textov\u00e9ho s\u00faboru s n\u00e1zvom docker-compose.yml<\/code>.<\/p>\n\n\n\nDocker Swarm<\/h3>\n\n\n\n N\u00e1stroj, v\u010faka ktor\u00e9mu m\u00f4\u017eeme spravova\u0165 viacero in\u0161tal\u00e1ci\u00ed projektu Docker (nody). Zabezpe\u010duje orchestr\u00e1ciu tak\u00e9hoto prostredia.<\/p>\n\n\n\n
Kedy a pre\u010do Docker pou\u017e\u00edva\u0165<\/h2>\n\n\n\n Existuje nieko\u013eko vlastnost\u00ed projektu Docker, v\u010faka ktor\u00fdm je v\u00fdhodn\u00e9 pou\u017e\u00edva\u0165 ho.<\/p>\n\n\n\n
Reprodukovate\u013enos\u0165 a pr\u00e1ca v t\u00edme<\/h3>\n\n\n\n Na ka\u017edom opera\u010dnom syst\u00e9me, ktor\u00fd m\u00e1 nain\u0161talovan\u00fd Docker, je mo\u017en\u00e9 spusti\u0165 obraz (image) a vytvori\u0165 tak kontajner s rovnak\u00fdm prostred\u00edm. Windows, MacOS alebo Linux – nie je d\u00f4le\u017eit\u00e9, ktor\u00fd opera\u010dn\u00fd syst\u00e9m pou\u017e\u00edvame. Ak teda vo v\u00fdvoj\u00e1rskom t\u00edme \u010dlenovia pou\u017e\u00edvaj\u00fa r\u00f4zne opera\u010dn\u00e9 syst\u00e9my, nemusia si nain\u0161talova\u0165 alebo plne virtualizova\u0165 in\u00fd opera\u010dn\u00fd syst\u00e9m. Sta\u010d\u00ed nain\u0161talova\u0165 Docker a spusti\u0165 kontajner s po\u017eadovan\u00fdm opera\u010dn\u00fdm syst\u00e9mom a n\u00e1strojmi.<\/p>\n\n\n\n
Izol\u00e1cia a r\u00fdchlos\u0165<\/h3>\n\n\n\n In\u0161tal\u00e1cia a nastavenia ak\u00fdchko\u013evek n\u00e1strojov v kontajneri nijako neovplyvnia hos\u0165ovsk\u00fd opera\u010dn\u00fd syst\u00e9m ani in\u00fd kontajner. To znamen\u00e1, \u017ee na jednom serveri m\u00f4\u017eeme ma\u0165 spusten\u00fd v jednom kontajneri webov\u00fd server a v druhom datab\u00e1zov\u00fd server, pri\u010dom sa nemus\u00edme stara\u0165 o pr\u00edpadn\u00e9 z\u00e1vislosti a konflikty z nich vypl\u00fdvaj\u00face. Takto m\u00f4\u017eeme r\u00fdchlo nastavi\u0165 v\u00fdvojov\u00e9 prostredie s po\u017eadovan\u00fdmi n\u00e1strojmi a sk\u00fa\u0161a\u0165 r\u00f4zne alternat\u00edvy bez ohrozenia stability hos\u0165ovsk\u00e9ho opera\u010dn\u00e9ho syst\u00e9mu.<\/p>\n\n\n\n
Bezpe\u010dnos\u0165<\/h3>\n\n\n\n Izol\u00e1cia jednotliv\u00fdch komponentov m\u00f4\u017ee prinies\u0165 zv\u00fd\u0161enie bezpe\u010dnosti. Z\u00e1rove\u0148 ide o sp\u00f4sob ako sa izolovane daj\u00fa prev\u00e1dzkova\u0165 star\u0161ie aplik\u00e1cie napr\u00edklad u\u017e bez dostupnej technickej podpory. <\/p>\n\n\n\n
Kedy Docker rad\u0161ej nepou\u017ei\u0165<\/h2>\n\n\n\n Ka\u017ed\u00e1 technol\u00f3gia je dobr\u00e1 v niektor\u00fdch pr\u00edpadoch a v in\u00fdch zase m\u00f4\u017ee by\u0165 v\u00fdhodnej\u0161ie siahnu\u0165 po inom rie\u0161en\u00ed. Toto s\u00fa pr\u00edpady, kedy sa Docker neoplat\u00ed pou\u017ei\u0165.<\/p>\n\n\n\n
Komplikovanos\u0165 a r\u00fdchlos\u0165<\/h3>\n\n\n\n Ak je aplik\u00e1cia pr\u00edli\u0161 komplikovan\u00e1 a potrebujeme, aby bola \u010do najr\u00fdchlej\u0161ia, Docker nie je dobr\u00fd n\u00e1pad. Prid\u00e1va toti\u017e \u010fal\u0161ie vrstvy, ktor\u00e9 stoja medzi hos\u0165ovsk\u00fdm opera\u010dn\u00fdm syst\u00e9mom a aplik\u00e1ciou, \u010do prirodzene celkov\u00fa r\u00fdchlos\u0165 aplik\u00e1cie spoma\u013euje. Jednoducho, ak aplik\u00e1cia potrebuje viac zdrojov a je n\u00e1ro\u010dn\u00e9 ju horizont\u00e1lne \u0161k\u00e1lova\u0165.<\/p>\n\n\n\n
Aplik\u00e1cia s grafick\u00fdm pou\u017e\u00edvate\u013esk\u00fdm rozhran\u00edm (GUI)<\/h3>\n\n\n\n Ak vyv\u00edjame aplik\u00e1ciu, ktor\u00e1 sa obsluhuje v grafickom prostred\u00ed my\u0161ou (teda nie v\u00fdhradne cez pr\u00edkazov\u00fd riadok), Docker nie je vhodn\u00fd n\u00e1stroj. V takomto pr\u00edpade je lep\u0161ie pou\u017ei\u0165 po\u010d\u00edta\u010d s po\u017eadovan\u00fdm opera\u010dn\u00fdm syst\u00e9mom alebo virtualizova\u0165 kompletn\u00fd opera\u010dn\u00fd syst\u00e9m.<\/p>\n\n\n\n
In\u0161talujeme Docker<\/h2>\n\n\n\n Uk\u00e1\u017eeme si in\u0161tal\u00e1ciu projektu Docker na opera\u010dnom syst\u00e9me Ubuntu 20.04. In\u0161tal\u00e1cia pre opera\u010dn\u00e9 syst\u00e9my Windows a MacOS prebieha v grafickom prostred\u00ed Docker Desktop<\/a>, ktor\u00fd n\u00e1s prevedie cel\u00fdm procesom in\u0161tal\u00e1cie. Pr\u00edkazy projektu Docker v\u0161ak bud\u00fa fungova\u0165 na ka\u017edom opera\u010dnom syst\u00e9me rovnako.<\/p>\n\n\n\nV prvom rade je potrebn\u00e9 zabezpe\u010di\u0165 aktu\u00e1lnos\u0165 v\u0161etk\u00fdch bal\u00edkov. Nain\u0161talujeme teda v\u0161etok updatovan\u00fd softv\u00e9r pomocou dvoch pr\u00edkazov v jednej d\u00e1vke:<\/p>\n\n\n\n
sudo apt update && sudo apt upgrade<\/pre>\n\n\n\nAk syst\u00e9m n\u00e1jde aktualizovate\u013en\u00e9 bal\u00ed\u010dky, takto sa op\u00fdta, \u010di ich chcete za\u010da\u0165 in\u0161talova\u0165:<\/p>\n\n\n\n
Do you want to continue? [Y\/n]<\/em><\/pre>\n\n\n\nStla\u010d\u00edme kl\u00e1ves y<\/code> ak chceme za\u010da\u0165 aktualiza\u010dn\u00fd proces alebo kl\u00e1ves n<\/code>, ak aktualizova\u0165 nechceme. N\u00e1sledne stla\u010d\u00edme kl\u00e1ves Enter<\/code>.<\/p>\n\n\n\nV\u00e4\u010d\u0161ina Linuxov\u00fdch distrib\u00faci\u00ed ma vo svojich repozit\u00e1roch Docker. Pokia\u013e chcete pracova\u0165 s aktu\u00e1lnymi verziami odpor\u00fa\u010dame \u00eds\u0165 cestou ofici\u00e1lneho skriptu.<\/p>\n\n\n\n
Na in\u0161tal\u00e1ciu projektu Docker pou\u017eijeme ofici\u00e1lny skript, ktor\u00fd in\u0161tal\u00e1ciu v termin\u00e1li zjednodu\u0161\u00ed na 2 pr\u00edkazy:<\/p>\n\n\n\n
curl -fsSL https:\/\/get.docker.com -o get-docker.sh<\/pre>\n\n\n\nsudo sh get-docker.sh<\/pre>\n\n\n\nOdteraz m\u00f4\u017eeme sp\u00fa\u0161\u0165a\u0165 kontajnery a vyu\u017e\u00edva\u0165 v\u0161etky ostatn\u00e9 n\u00e1stroje projektu Docker.<\/p>\n\n\n\n
Ak by ste chceli pou\u017e\u00edva\u0165 Docker ako pou\u017e\u00edvate\u013e bez root opr\u00e1vnenia, mali by ste zv\u00e1\u017ei\u0165 pridanie svojho pou\u017e\u00edvate\u013ea do skupiny \u201edocker\u201c napr\u00edklad ako:<\/p>\n\n\n\n
sudo usermod -aG docker u\u017e\u00edvate\u013e<\/pre>\n\n\n\nNiekedy je nutn\u00e9 sa ako pou\u017e\u00edvate\u013e odhl\u00e1si\u0165 a n\u00e1sledne zase prihl\u00e1si\u0165.<\/p>\n\n\n\n
Zhrnutie<\/h2>\n\n\n\n Zadefinovali, \u010do je Docker, kedy je vhodn\u00e9 pou\u017ei\u0165 ho a kedy rad\u0161ej nie. Nain\u0161talovali sme Docker a uk\u00e1zali sme si, ako v \u0148om jednoducho a r\u00fdchlo spusti\u0165 prostredie Linuxovej distrib\u00facie Ubuntu. <\/p>\n","protected":false},"excerpt":{"rendered":"
Docker je sada produktov a n\u00e1strojov typu platforma-ako-slu\u017eba (PaaS), ktor\u00e9 vyu\u017e\u00edvaj\u00fa virtualiz\u00e1ciu na \u00farovni opera\u010dn\u00e9ho syst\u00e9mu na dod\u00e1vanie softv\u00e9ru v bal\u00edkoch naz\u00fdvan\u00fdch kontajnery. Ide o softv\u00e9r s otvoren\u00fdm zdrojov\u00fdm k\u00f3dom. Niektor\u00e9 \u010dasti s\u00fa pon\u00fakan\u00e9 ako komer\u010dn\u00e1 slu\u017eba. Medzi jeho hlavn\u00e9 v\u00fdhody patr\u00ed, \u017ee nie je d\u00f4le\u017eit\u00e9 na akom opera\u010dnom syst\u00e9me…<\/p>\n","protected":false},"author":28,"template":"","format":"standard","meta":{"footnotes":""},"ht-kb-category":[390],"ht-kb-tag":[336,393,396,339,381,189],"class_list":["post-16695","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-docker","ht_kb_tag-cli","ht_kb_tag-docker","ht_kb_tag-kontajnery","ht_kb_tag-open-source","ht_kb_tag-server","ht_kb_tag-vps"],"yoast_head":"\n
Docker - 1. Predstavenie, in\u0161tal\u00e1cia a z\u00e1kladn\u00e9 oper\u00e1cie - Websupport centrum podpory<\/title>\n \n \n \n \n \n \n \n \n \n \n \n\t \n