{"id":16722,"date":"2020-11-06T12:50:19","date_gmt":"2020-11-06T11:50:19","guid":{"rendered":"https:\/\/www.websupport.sk\/podpora\/?post_type=ht_kb&#038;p=16722"},"modified":"2020-11-26T15:25:18","modified_gmt":"2020-11-26T14:25:18","slug":"docker-dockerfiles-a-images","status":"publish","type":"ht_kb","link":"https:\/\/www.websupport.sk\/podpora\/kb\/docker-dockerfiles-a-images\/","title":{"rendered":"Docker &#8211; 2. Dockerfiles a images"},"content":{"rendered":"\n<p><a href=\"https:\/\/www.websupport.sk\/podpora\/kb\/docker-instalacia-a-zakladne-operacie\/\">V predo\u0161lej \u010dasti tohto seri\u00e1lu<\/a> sme si predstavili koncept a n\u00e1stroje projektu Docker a tie\u017e sme si Docker nain\u0161talovali. Spomenuli sme si, \u017ee z\u00e1klad tvoria kontajnery. V tejto \u010dasti si na pr\u00edkladoch uk\u00e1\u017eeme, \u010do sa vlastne deje pred samotn\u00fdm spusten\u00edm kontajnerov. Skr\u00e1tka, budeme sa venova\u0165 obsahu textov\u00e9ho konfigura\u010dn\u00e9ho s\u00faboru <strong>Dockerfile<\/strong> a tomu, ako ovplyv\u0148uje spustenie obrazu (<strong>image<\/strong>).<\/p>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-success\">Tip: <strong>Docker be\u017e\u00ed v\u00fdborne vo <a href=\"https:\/\/www.websupport.sk\/virtual-server\">WebSupport VPS<\/a><\/strong>. Vysk\u00fa\u0161ajte pr\u00e9miov\u00fd virtu\u00e1lny server e\u0161te dnes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u010co je Dockerfile a ako ho pou\u017ei\u0165<\/h2>\n\n\n\n<p>Dockerfile je konfigura\u010dn\u00fd textov\u00fd s\u00fabor, do ktor\u00e9ho zapisujeme pr\u00edkazy na automatiz\u00e1ciu zostavenia (build) a spustenia (run) obrazu (image). M\u00f4\u017eeme napr\u00edklad necha\u0165 nain\u0161talova\u0165 potrebn\u00fd softv\u00e9r \u010di r\u00f4zne z\u00e1vislosti, aby sme zabezpe\u010dili stabiln\u00e9 v\u00fdvoj\u00e1rske prostredie. Ke\u010f tvor\u00edme s\u00fabor Dockerfile, dobr\u00e1 prax je umiestni\u0165 ho do samostatn\u00e9ho prie\u010dinka spolu so v\u0161etk\u00fdmi s\u00fabormi, ktor\u00e9 chceme na zostavenie (build) a na spustenie (run) obrazu (image) pou\u017ei\u0165. Pr\u00edklad s prie\u010dinkom s n\u00e1zvom <code>docker-test<\/code> v domovskom prie\u010dinku prihl\u00e1sen\u00e9ho pou\u017e\u00edvate\u013ea (vlnovka):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mkdir ~\/docker-test &amp;&amp; cd ~\/docker-test<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">touch Dockerfile<\/pre>\n\n\n\n<p>Vytvorili sme si teda prie\u010dinok s n\u00e1zvom <code>docker-test<\/code> v domovskom prie\u010dinku prihl\u00e1sen\u00e9ho pou\u017e\u00edvate\u013ea (vlnovka), premiestnili sme sa do\u0148 (prv\u00fd riadok) a n\u00e1sledne sme v pr\u00e1zdnom prie\u010dinku docker-test vytvorili textov\u00fd s\u00fabor s n\u00e1zvom <code>Dockerfile<\/code> (druh\u00fd riadok). <\/p>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-info\">V opera\u010dnom syst\u00e9me Windows  n\u00e1zov s\u00faboru mus\u00ed by\u0165 <em>bez koncovky<\/em>, ktor\u00e1 sa vo Windowse zvy\u010dajne prid\u00e1va do n\u00e1zvu s\u00faborov za posledn\u00fa bodku vpravo (napr. pr\u00edpona txt).<\/p>\n\n\n\n<p>Priprav\u00edme si ve\u013emi jednoduch\u00fd s\u00fabor s n\u00e1zvom <code>index.html<\/code>, ktor\u00fd nesk\u00f4r nech\u00e1me na\u010d\u00edta\u0165 cez webov\u00fd server Nginx v kontajneri:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">echo \"Ahoj z Docker kontajnera!\" &gt; index.html<\/pre>\n\n\n\n<p>Aktu\u00e1lne sa v prie\u010dinku docker-test nach\u00e1dzaj\u00fa 2 s\u00fabory: Dockerfile a index.html. Do s\u00faboru <code>Dockerfile<\/code> si teraz zap\u00ed\u0161eme, \u017ee chceme nain\u0161talova\u0165 webov\u00fd server Nginx (prv\u00fd riadok). Pr\u00edkazom na druhom riadku, do obrazu skop\u00edrujeme s\u00fabor <code>index.html<\/code>, ktor\u00fd nesk\u00f4r zobraz\u00edme cez Nginx. Otvor\u00edme si s\u00fabor <code>Dockerfile<\/code> v textovom editore <code>nano<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">nano Dockerfile<\/pre>\n\n\n\n<p>a zap\u00ed\u0161eme jednoduch\u00fd skript s 2 riadkami:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">FROM nginx<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">COPY index.html \/usr\/share\/nginx\/html<\/pre>\n\n\n\n<p>S\u00fabor ulo\u017e\u00edme pomocou kl\u00e1vesovej skratky <code>Ctrl + X<\/code> a n\u00e1sledne stla\u010den\u00edm kl\u00e1vesu <code>y<\/code> a potvrden\u00edm kl\u00e1vesom enter.<\/p>\n\n\n\n<p>Pr\u00edkazy <code>FROM<\/code> a <code>COPY<\/code> s\u00fa iba dva z \u010fal\u0161\u00edch podporovan\u00fdch. V ostatn\u00fdch \u010dastiach tohto seri\u00e1lu sa budeme zaobera\u0165 s viacer\u00fdmi pr\u00edkazmi.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zostavujeme a sp\u00fa\u0161\u0165ame obrazy (images)<\/h2>\n\n\n\n<p>Konfigura\u010dn\u00fd s\u00fabor <code>Dockerfile<\/code> m\u00e1me pripraven\u00fd a teraz m\u00f4\u017eeme zostavi\u0165 (build) a spusti\u0165 (run) obraz (image). Aby sme si overili spr\u00e1vnos\u0165 nap\u00edsan\u00e9ho skriptu v s\u00fabore <code>Dockerfile<\/code>, nech\u00e1me na z\u00e1klade jeho obsahu zostavi\u0165 obraz s n\u00e1zvom <code>nginx-test<\/code> (nezabudneme skop\u00edrova\u0165 aj t\u00fa bodku na konci):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">docker build -t nginx-test .<\/pre>\n\n\n\n<p>N\u00e1sledne zist\u00edme, \u010di je zostaven\u00fd obraz v zozname obrazov:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">docker image ls<\/pre>\n\n\n\n<p>Ke\u010f\u017ee sme doteraz nezostavovali \u017eiadne in\u00e9 obrazy, vyp\u00ed\u0161u sa 2 obrazy. Jeden s n\u00e1zvom <code>nginx<\/code> a druh\u00fd <code>nginx-test<\/code>. Ten prv\u00fd je z\u00e1kladn\u00fd obraz, na ktorom je postaven\u00fd ten druh\u00fd. Do druh\u00e9ho sme skop\u00edrovali s\u00fabor index.html, preto budeme sp\u00fa\u0161\u0165a\u0165 pr\u00e1ve tento obraz:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">docker run -d nginx-test<\/pre>\n\n\n\n<p>\u017de sa obraz s n\u00e1zvom nginx-test spustil a vytvoril tak kontajner s webov\u00fdm serverom Nginx, zist\u00edme pomocou pr\u00edkazu:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">docker ps<\/pre>\n\n\n\n<p>Vyp\u00edsal sa zoznam spusten\u00fdch kontajnerov. Aby sme sa do kontajnera dostali a zistili, \u010di v \u0148om v\u0161etko funguje ako m\u00e1, potrebujeme CONTAINER ID (12 znakov z prv\u00e9ho st\u013apca &#8211; tu <code>be08a567a805<\/code>, va\u0161e sa bud\u00fa l\u00ed\u0161i\u0165). Takto sa teda do kontajnera dostaneme:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">docker exec -it be08a567a805 bash<\/pre>\n\n\n\n<p>Z\u00edskali sme pr\u00edstup do pr\u00edkazov\u00e9ho riadku (bash) vo vn\u00fatri kontajnera <code>be08a567a805<\/code> a teraz u\u017e iba sta\u010d\u00ed vysk\u00fa\u0161a\u0165, \u010di webov\u00fd server Nginx funguje a naozaj zobraz\u00ed obsah s\u00faboru index.html:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">curl localhost<\/pre>\n\n\n\n<p>Po spusten\u00ed pr\u00edkazu sa n\u00e1m zobraz\u00ed obsah s\u00faboru <code>index.html<\/code> (Ahoj z Docker kontajnera!), \u010do znamen\u00e1, \u017ee webov\u00fd server Nginx funguje a zobrazuje spr\u00e1vny obsah.<\/p>\n\n\n\n<p>Spusten\u00fd kontajner ukon\u010d\u00edme (prv\u00fd riadok) a vyma\u017eeme (druh\u00fd riadok):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">docker stop be08a567a805<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">docker rm be08a567a805<\/pre>\n\n\n\n<p>Teraz m\u00f4\u017eeme zmeni\u0165 obsah s\u00faboru <code>index.html<\/code> v prie\u010dinku <code>docker-test<\/code> a op\u00e4\u0165 zostavi\u0165 (build) a spusti\u0165 (run) obraz (image) s n\u00e1zvom <code>nginx-test<\/code>, ako p\u00ed\u0161eme vy\u0161\u0161ie.<\/p>\n\n\n\n<p>Aby sme pri ka\u017edej zmene obsahu s\u00faboru <code>index.html<\/code> nemuseli ukon\u010dova\u0165, maza\u0165, zostavova\u0165 a sp\u00fa\u0161\u0165a\u0165 obraz prcujeme s obsahom (volume).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zhrnutie<\/h2>\n\n\n\n<p>Uk\u00e1zali sme si ako zostavi\u0165 (build) a spusti\u0165 (run) obraz (image) s konkr\u00e9tnymi nastaveniami, ktor\u00e9 sme zap\u00edsali do textov\u00e9ho konfigura\u010dn\u00e9ho s\u00faboru <code>Dockerfile<\/code>. Dostali sme sa do vn\u00fatra spusten\u00e9ho obrazu (\u010di\u017ee do kontajnera), aby sme si overili, \u017ee v\u0161etko funguje spr\u00e1vne. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>V predo\u0161lej \u010dasti tohto seri\u00e1lu sme si predstavili koncept a n\u00e1stroje projektu Docker a tie\u017e sme si Docker nain\u0161talovali. Spomenuli sme si, \u017ee z\u00e1klad tvoria kontajnery. V tejto \u010dasti si na pr\u00edkladoch uk\u00e1\u017eeme, \u010do sa vlastne deje pred samotn\u00fdm spusten\u00edm kontajnerov. Skr\u00e1tka, budeme sa venova\u0165 obsahu textov\u00e9ho konfigura\u010dn\u00e9ho s\u00faboru Dockerfile&#8230;<\/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-16722","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":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Docker - 2. Dockerfiles a images - Websupport centrum podpory<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.websupport.sk\/podpora\/kb\/docker-dockerfiles-a-images\/\" \/>\n<meta property=\"og:locale\" content=\"sk_SK\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Docker - 2. Dockerfiles a images - Websupport centrum podpory\" \/>\n<meta property=\"og:description\" content=\"V predo\u0161lej \u010dasti tohto seri\u00e1lu sme si predstavili koncept a n\u00e1stroje projektu Docker a tie\u017e sme si Docker nain\u0161talovali. Spomenuli sme si, \u017ee z\u00e1klad tvoria kontajnery. V tejto \u010dasti si na pr\u00edkladoch uk\u00e1\u017eeme, \u010do sa vlastne deje pred samotn\u00fdm spusten\u00edm kontajnerov. Skr\u00e1tka, budeme sa venova\u0165 obsahu textov\u00e9ho konfigura\u010dn\u00e9ho s\u00faboru Dockerfile...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.websupport.sk\/podpora\/kb\/docker-dockerfiles-a-images\/\" \/>\n<meta property=\"og:site_name\" content=\"Websupport centrum podpory\" \/>\n<meta property=\"article:modified_time\" content=\"2020-11-26T14:25:18+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Predpokladan\u00fd \u010das \u010d\u00edtania\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 min\u00faty\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.websupport.sk\\\/podpora\\\/kb\\\/docker-dockerfiles-a-images\\\/\",\"url\":\"https:\\\/\\\/www.websupport.sk\\\/podpora\\\/kb\\\/docker-dockerfiles-a-images\\\/\",\"name\":\"Docker - 2. Dockerfiles a images - Websupport centrum podpory\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.websupport.sk\\\/podpora\\\/#website\"},\"datePublished\":\"2020-11-06T11:50:19+00:00\",\"dateModified\":\"2020-11-26T14:25:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.websupport.sk\\\/podpora\\\/kb\\\/docker-dockerfiles-a-images\\\/#breadcrumb\"},\"inLanguage\":\"sk-SK\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.websupport.sk\\\/podpora\\\/kb\\\/docker-dockerfiles-a-images\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.websupport.sk\\\/podpora\\\/kb\\\/docker-dockerfiles-a-images\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.websupport.sk\\\/podpora\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Docker &#8211; 2. Dockerfiles a images\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.websupport.sk\\\/podpora\\\/#website\",\"url\":\"https:\\\/\\\/www.websupport.sk\\\/podpora\\\/\",\"name\":\"Websupport centrum podpory\",\"description\":\"Radi v\u00e1m pom\u00f4\u017eeme s va\u0161im probl\u00e9mom\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.websupport.sk\\\/podpora\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"sk-SK\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Docker - 2. Dockerfiles a images - Websupport centrum podpory","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.websupport.sk\/podpora\/kb\/docker-dockerfiles-a-images\/","og_locale":"sk_SK","og_type":"article","og_title":"Docker - 2. Dockerfiles a images - Websupport centrum podpory","og_description":"V predo\u0161lej \u010dasti tohto seri\u00e1lu sme si predstavili koncept a n\u00e1stroje projektu Docker a tie\u017e sme si Docker nain\u0161talovali. Spomenuli sme si, \u017ee z\u00e1klad tvoria kontajnery. V tejto \u010dasti si na pr\u00edkladoch uk\u00e1\u017eeme, \u010do sa vlastne deje pred samotn\u00fdm spusten\u00edm kontajnerov. Skr\u00e1tka, budeme sa venova\u0165 obsahu textov\u00e9ho konfigura\u010dn\u00e9ho s\u00faboru Dockerfile...","og_url":"https:\/\/www.websupport.sk\/podpora\/kb\/docker-dockerfiles-a-images\/","og_site_name":"Websupport centrum podpory","article_modified_time":"2020-11-26T14:25:18+00:00","twitter_card":"summary_large_image","twitter_misc":{"Predpokladan\u00fd \u010das \u010d\u00edtania":"4 min\u00faty"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.websupport.sk\/podpora\/kb\/docker-dockerfiles-a-images\/","url":"https:\/\/www.websupport.sk\/podpora\/kb\/docker-dockerfiles-a-images\/","name":"Docker - 2. Dockerfiles a images - Websupport centrum podpory","isPartOf":{"@id":"https:\/\/www.websupport.sk\/podpora\/#website"},"datePublished":"2020-11-06T11:50:19+00:00","dateModified":"2020-11-26T14:25:18+00:00","breadcrumb":{"@id":"https:\/\/www.websupport.sk\/podpora\/kb\/docker-dockerfiles-a-images\/#breadcrumb"},"inLanguage":"sk-SK","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.websupport.sk\/podpora\/kb\/docker-dockerfiles-a-images\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.websupport.sk\/podpora\/kb\/docker-dockerfiles-a-images\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.websupport.sk\/podpora\/"},{"@type":"ListItem","position":2,"name":"Docker &#8211; 2. Dockerfiles a images"}]},{"@type":"WebSite","@id":"https:\/\/www.websupport.sk\/podpora\/#website","url":"https:\/\/www.websupport.sk\/podpora\/","name":"Websupport centrum podpory","description":"Radi v\u00e1m pom\u00f4\u017eeme s va\u0161im probl\u00e9mom","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.websupport.sk\/podpora\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"sk-SK"}]}},"_links":{"self":[{"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/ht-kb\/16722","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/ht-kb"}],"about":[{"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/users\/28"}],"version-history":[{"count":3,"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/ht-kb\/16722\/revisions"}],"predecessor-version":[{"id":16932,"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/ht-kb\/16722\/revisions\/16932"}],"wp:attachment":[{"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/media?parent=16722"}],"wp:term":[{"taxonomy":"ht_kb_category","embeddable":true,"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/ht-kb-category?post=16722"},{"taxonomy":"ht_kb_tag","embeddable":true,"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/ht-kb-tag?post=16722"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}