{"id":790,"date":"2021-04-13T11:55:03","date_gmt":"2021-04-13T11:55:03","guid":{"rendered":"https:\/\/dev.sourcecode.sk\/wsczkb\/?post_type=ht_kb&#038;p=790"},"modified":"2021-10-12T14:24:22","modified_gmt":"2021-10-12T12:24:22","slug":"docker-3-volume","status":"publish","type":"ht_kb","link":"https:\/\/www.websupport.cz\/podpora\/kb\/docker-3-volume\/","title":{"rendered":"Docker &#8211; 3. Volume"},"content":{"rendered":"\n<p>V t\u00e9to \u010dasti za\u010dneme v kontejneru pou\u017e\u00edvat <strong>Volume<\/strong> (obsah) pro pr\u00e1ci s perzistentn\u00edmi daty.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.websupport.cz\/podpora\/kb\/docker-2-dockerfiles-a-images\/\">V p\u0159ede\u0161l\u00e9 \u010d\u00e1sti jsme si nazna\u010dili<\/a>, \u017ee kdy\u017e chceme m\u011bnit obsah souboru <code>index.html<\/code>, nast\u00e1v\u00e1 komplikace. Abychom tuto komplikaci vy\u0159e\u0161ili, soubor <code>index.html<\/code> nebudeme kop\u00edrovat do kontejneru p\u0159i ka\u017ed\u00e9m spu\u0161t\u011bn\u00ed (run) obrazu (image) nanovo. Nam\u00edsto toho jednodu\u0161e na soubor <code>index.html<\/code> na hostitelsk\u00e9m syst\u00e9mu odk\u00e1\u017eeme. Kontejner tak nebude obsah souboru na\u010d\u00edtat zevnit\u0159 (ze sv\u00e9ho souborov\u00e9ho syst\u00e9mu), ale zvenku (ze souborov\u00e9ho syst\u00e9mu hostitelsk\u00e9ho syst\u00e9mu). Jde o rychlej\u0161\u00ed zp\u016fsob spou\u0161t\u011bn\u00ed a pou\u017e\u00edv\u00e1n\u00ed obraz\u016f (images), d\u00edky kter\u00e9mu nav\u00edc p\u0159i vymazan\u00ed kontejneru nep\u0159ijdeme o pot\u0159ebn\u00fd obsah (nap\u0159. ten ze souboru <code>index.html<\/code>).<\/p>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon\">Tip: <strong>Docker b\u011b\u017e\u00ed v\u00fdborn\u011b ve <a href=\"https:\/\/www.websupport.cz\/servery\/vps\/\">WebSupport VPS<\/a><\/strong>. Vysou\u0161ejte pr\u00e9miov\u00fd virtu\u00e1ln\u00ed server je\u0161t\u011b dnes.<\/p>\n\n\n\n<p>\u00dadaje sd\u00edl\u00edme mezi kontejnerem a hostitelsk\u00fdm syst\u00e9mem, ale t\u00e9\u017e mezi v\u00edcer\u00fdmi kontejnery. No a d\u00edky obsahu (volume) se \u00fadaje ukl\u00e1daj\u00ed pouze na hostitelsk\u00fd po\u010d\u00edta\u010d (ne do kontejneru samotn\u00e9ho), d\u00edky \u010demu\u017e se s p\u0159ib\u00fdvaj\u00edc\u00edmi \u00fadaji nezv\u011bt\u0161uje velikost kontejneru.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sd\u00edl\u00edme obsah mezi hostitelsk\u00fdm syst\u00e9mem a kontejnerem<\/h2>\n\n\n\n<p>Tak jako <a href=\"https:\/\/www.websupport.cz\/podpora\/kb\/docker-2-dockerfiles-a-images\/\">v p\u0159ede\u0161l\u00e9 \u010dasti<\/a>, i v t\u00e9to budeme pracovat s textov\u00fdm konfigura\u010dn\u00edm souborem <code>Dockerfile<\/code> ve stejn\u00e9 slo\u017ece <code>~\/docker-test<\/code> a se stejn\u00fdm obrazem (image) <code>nginx-test<\/code>. Rozd\u00edl v\u0161ak bude v obsahu souboru <code>Dockerfile<\/code>. Nebudeme u\u017e toti\u017e kop\u00edrovat soubor <code>index.html<\/code> z hostitelsk\u00e9ho syst\u00e9mu do kontejneru, pouze na n\u011bj odk\u00e1\u017eeme. Obsah souboru <code>Dockerfile<\/code> si v textov\u00e9m editoru nano uprav\u00edme takto:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">nano Dockerfile<\/pre>\n\n\n\n<p>a vlo\u017e\u00edme tyto 2 \u0159\u00e1dky:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">FROM nginx<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">WORKDIR \/usr\/share\/nginx\/html<\/pre>\n\n\n\n<p>P\u0159\u00edkaz z prvn\u00edho \u0159\u00e1dku spust\u00ed obraz s webov\u00fdm serverem Nginx. P\u0159\u00edkaz v druh\u00e9m \u0159\u00e1dku zabezpe\u010d\u00ed, \u017ee se p\u0159\u00edkazov\u00fd \u0159\u00e1dek v kontejneru celkem prakticky otev\u0159e ve slo\u017ece <code>html<\/code>, kde se nach\u00e1z\u00ed soubor <code>index.html<\/code>. Takto m\u016f\u017eeme okam\u017eit\u011b po p\u0159ihl\u00e1\u0161en\u00ed do kontejneru ov\u011b\u0159it, jestli se soubor <code>index.html<\/code> nach\u00e1z\u00ed ve spr\u00e1vn\u00e9 slo\u017ece a jestli se jeho obsah doopravdy shoduje s t\u00edm na hostitelsk\u00e9m po\u010d\u00edta\u010di.<\/p>\n\n\n\n<p>Soubor ulo\u017e\u00edme pomoc\u00ed kl\u00e1vesov\u00e9 zkratky <code>Ctrl + X<\/code> a n\u00e1sledn\u011b stla\u010den\u00edm kl\u00e1vesy <code>y<\/code> a potvrzen\u00edm kl\u00e1vesou enter.<\/p>\n\n\n\n<p>Vytvo\u0159\u00edme slo\u017eku s n\u00e1zvem html a p\u0159em\u00edst\u00edme do n\u00ed soubor <code>index.html<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mkdir ~\/docker-test\/html &amp;&amp; mv ~\/docker-test\/index.html ~\/docker-test\/html\/<\/pre>\n\n\n\n<p>Sestav\u00edme si obraz s nastaven\u00edmi z konfigura\u010dn\u00edho souboru <code>Dockerfile<\/code> ve slo\u017ece <code>~\/docker-test<\/code> p\u0159esn\u011b tak, jako v p\u0159ede\u0161l\u00e9 \u010d\u00e1sti (nezapomeneme zkop\u00edrovat i tu te\u010dku na konci):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">docker build -t nginx-test .<\/pre>\n\n\n\n<p>Po \u00fasp\u011b\u0161n\u00e9m sestaven\u00ed obraz <code>nginx-test<\/code> spust\u00edme. Oproti minul\u00e9 \u010d\u00e1sti do procesu spu\u0161t\u011bn\u00ed ale je\u0161t\u011b p\u0159id\u00e1me jedno nastaven\u00ed, kter\u00e9 n\u00e1m v kontejneru odk\u00e1\u017ee na obsah slo\u017eky na hostitelsk\u00e9m po\u010d\u00edta\u010di (<code>-v ~\/docker-test\/html:\/usr\/share\/nginx\/htm<\/code>). Dvojte\u010dkou (<code>:<\/code>) odd\u011blujeme cestu ke slo\u017ece na hostitelsk\u00e9m po\u010d\u00edta\u010di (zde <code>~\/docker-test\/html<\/code>) a cestu ke slo\u017ece v kontejneru (zde <code>\/usr\/share\/nginx\/html<\/code>). Cesta v hostitelsk\u00e9mu po\u010d\u00edta\u010di je v\u017edy prvn\u00ed (vlevo od dvojte\u010dky) a cesta v kontejneru v\u017edy druh\u00e1 (vpravo od dvojte\u010dky).:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">docker run -d -v ~\/docker-test\/html:\/usr\/share\/nginx\/html nginx-test<\/pre>\n\n\n\n<p>Zjist\u00edme si ID kontejneru (12 znak\u016f z prvn\u00edho sloupce), kter\u00fd byl spu\u0161t\u011bn\u00fd z obrazu nginx-test:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">docker ps<\/pre>\n\n\n\n<p>&#8230;a p\u0159ihl\u00e1s\u00edme se do p\u0159\u00edkazov\u00e9ho \u0159\u00e1dku (bash) kontejneru (va\u0161e ID se bude li\u0161it):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">docker exec -it aaaf9e616e0b bash<\/pre>\n\n\n\n<p>D\u00edky p\u0159\u00edkazu <code>WORKDIR<\/code> v konfigura\u010dn\u00edm souboru <code>Dockerfile<\/code> jsme ve slo\u017ece <code>html<\/code>, kde se nach\u00e1z\u00ed soubor <code>index.html<\/code>. Zde si ov\u011b\u0159\u00edme, jestli funguje webov\u00fd server Nginx a jak\u00fd je aktu\u00e1ln\u00ed obsah souboru index.html:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">curl localhost<\/pre>\n\n\n\n<p><a href=\"https:\/\/www.websupport.cz\/podpora\/kb\/docker-2-dockerfiles-a-images\/\">V p\u0159ede\u0161l\u00e9 \u010d\u00e1sti<\/a> jsme si do souboru index.html ulo\u017eili uv\u00edtac\u00ed v\u011btu <code>\u201cAhoj z Docker kontejneru!\u201d<\/code>, tak\u017ee se n\u00e1m zobraz\u00ed i te\u010f. Abychom si ov\u011b\u0159ili, jestli se zm\u011bny v obsahu na hostitelsk\u00e9m po\u010d\u00edta\u010di projev\u00ed okam\u017eit\u011b i v kontejneru (bez op\u011btovn\u00e9ho mazan\u00ed, sestavov\u00e1n\u00ed a spou\u0161t\u011bn\u00ed obrazu), p\u0159id\u00e1me na hostitelsk\u00e9m po\u010d\u00edta\u010di je\u0161t\u011b jeden \u0159\u00e1dek:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">echo \"Tuto v\u011btu jsme zapsali z hostitelsk\u00e9ho po\u010d\u00edta\u010de.\" &gt;&gt; ~\/docker-test\/html\/index.html<\/pre>\n\n\n\n<p>Op\u011bt si v kontejneru nech\u00e1me vypsat aktu\u00e1ln\u00ed obsah souboru <code>index.html<\/code> a zjist\u00edme, \u017ee to, co jsme zapsali na hostitelsk\u00e9m po\u010d\u00edta\u010di, se okam\u017eit\u011b projev\u00ed i v kontejneru:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">curl localhost<\/pre>\n\n\n\n<p>Nemuseli jsme u\u017e tedy kontejner zastavit, znovu sestavit a spustit obraz, ale sta\u010dilo pouze zm\u011bnit obsah souboru na hostitelsk\u00e9m po\u010d\u00edta\u010di. Uzav\u0159en\u00fd kontejner z p\u0159ede\u0161l\u00e9 \u010d\u00e1sti jsme te\u010f otev\u0159eli tak, aby dok\u00e1zal \u010d\u00edst a zapisovat v souborech na hostitelsk\u00e9m po\u010d\u00edta\u010di. Krom\u011b t\u00e9to v\u00fdhody z\u00edsk\u00e1v\u00e1me dal\u0161\u00ed: I po zastaven\u00ed kontejneru a vymazan\u00ed obrazu budeme m\u00edt obsah souboru <code>index.html<\/code> st\u00e1le zachovan\u00fd, jestli u\u017e jsme d\u011blali zm\u011bny v kontejneru nebo na hostiteksk\u00e9m po\u010d\u00edta\u010di.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Shrnut\u00ed<\/h2>\n\n\n\n<p>Uk\u00e1zali jsme si, jak do kontejneru p\u0159id\u00e1vat data pomoc\u00ed obsahu (volume) tak, aby dok\u00e1zal \u010d\u00edst a zapisovat v souborech na hostitelsk\u00e9m syst\u00e9mu. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>V t\u00e9to \u010dasti za\u010dneme v kontejneru pou\u017e\u00edvat Volume (obsah) pro pr\u00e1ci s perzistentn\u00edmi daty. V p\u0159ede\u0161l\u00e9 \u010d\u00e1sti jsme si nazna\u010dili, \u017ee kdy\u017e chceme m\u011bnit obsah souboru index.html, nast\u00e1v\u00e1 komplikace. Abychom tuto komplikaci vy\u0159e\u0161ili, soubor index.html nebudeme kop\u00edrovat do kontejneru p\u0159i ka\u017ed\u00e9m spu\u0161t\u011bn\u00ed (run) obrazu (image) nanovo. Nam\u00edsto toho jednodu\u0161e na&#8230;<\/p>\n","protected":false},"author":3,"template":"","format":"standard","meta":{"footnotes":""},"ht-kb-category":[126],"ht-kb-tag":[],"class_list":["post-790","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-docker"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Docker - 3. Volume - Websupport Centrum n\u00e1pov\u011bdy<\/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.cz\/podpora\/kb\/docker-3-volume\/\" \/>\n<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Docker - 3. Volume - Websupport Centrum n\u00e1pov\u011bdy\" \/>\n<meta property=\"og:description\" content=\"V t\u00e9to \u010dasti za\u010dneme v kontejneru pou\u017e\u00edvat Volume (obsah) pro pr\u00e1ci s perzistentn\u00edmi daty. V p\u0159ede\u0161l\u00e9 \u010d\u00e1sti jsme si nazna\u010dili, \u017ee kdy\u017e chceme m\u011bnit obsah souboru index.html, nast\u00e1v\u00e1 komplikace. Abychom tuto komplikaci vy\u0159e\u0161ili, soubor index.html nebudeme kop\u00edrovat do kontejneru p\u0159i ka\u017ed\u00e9m spu\u0161t\u011bn\u00ed (run) obrazu (image) nanovo. Nam\u00edsto toho jednodu\u0161e na...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.websupport.cz\/podpora\/kb\/docker-3-volume\/\" \/>\n<meta property=\"og:site_name\" content=\"Websupport Centrum n\u00e1pov\u011bdy\" \/>\n<meta property=\"article:modified_time\" content=\"2021-10-12T12:24:22+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Odhadovan\u00e1 doba \u010dten\u00ed\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minuty\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/podpora\\\/kb\\\/docker-3-volume\\\/\",\"url\":\"https:\\\/\\\/www.websupport.cz\\\/podpora\\\/kb\\\/docker-3-volume\\\/\",\"name\":\"Docker - 3. Volume - Websupport Centrum n\u00e1pov\u011bdy\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/podpora\\\/#website\"},\"datePublished\":\"2021-04-13T11:55:03+00:00\",\"dateModified\":\"2021-10-12T12:24:22+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/podpora\\\/kb\\\/docker-3-volume\\\/#breadcrumb\"},\"inLanguage\":\"cs\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.websupport.cz\\\/podpora\\\/kb\\\/docker-3-volume\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/podpora\\\/kb\\\/docker-3-volume\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.websupport.cz\\\/podpora\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Docker &#8211; 3. Volume\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.websupport.cz\\\/podpora\\\/#website\",\"url\":\"https:\\\/\\\/www.websupport.cz\\\/podpora\\\/\",\"name\":\"Websupport Centrum n\u00e1pov\u011bdy\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.websupport.cz\\\/podpora\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"cs\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Docker - 3. Volume - Websupport Centrum n\u00e1pov\u011bdy","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.cz\/podpora\/kb\/docker-3-volume\/","og_locale":"cs_CZ","og_type":"article","og_title":"Docker - 3. Volume - Websupport Centrum n\u00e1pov\u011bdy","og_description":"V t\u00e9to \u010dasti za\u010dneme v kontejneru pou\u017e\u00edvat Volume (obsah) pro pr\u00e1ci s perzistentn\u00edmi daty. V p\u0159ede\u0161l\u00e9 \u010d\u00e1sti jsme si nazna\u010dili, \u017ee kdy\u017e chceme m\u011bnit obsah souboru index.html, nast\u00e1v\u00e1 komplikace. Abychom tuto komplikaci vy\u0159e\u0161ili, soubor index.html nebudeme kop\u00edrovat do kontejneru p\u0159i ka\u017ed\u00e9m spu\u0161t\u011bn\u00ed (run) obrazu (image) nanovo. Nam\u00edsto toho jednodu\u0161e na...","og_url":"https:\/\/www.websupport.cz\/podpora\/kb\/docker-3-volume\/","og_site_name":"Websupport Centrum n\u00e1pov\u011bdy","article_modified_time":"2021-10-12T12:24:22+00:00","twitter_card":"summary_large_image","twitter_misc":{"Odhadovan\u00e1 doba \u010dten\u00ed":"3 minuty"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.websupport.cz\/podpora\/kb\/docker-3-volume\/","url":"https:\/\/www.websupport.cz\/podpora\/kb\/docker-3-volume\/","name":"Docker - 3. Volume - Websupport Centrum n\u00e1pov\u011bdy","isPartOf":{"@id":"https:\/\/www.websupport.cz\/podpora\/#website"},"datePublished":"2021-04-13T11:55:03+00:00","dateModified":"2021-10-12T12:24:22+00:00","breadcrumb":{"@id":"https:\/\/www.websupport.cz\/podpora\/kb\/docker-3-volume\/#breadcrumb"},"inLanguage":"cs","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.websupport.cz\/podpora\/kb\/docker-3-volume\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.websupport.cz\/podpora\/kb\/docker-3-volume\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.websupport.cz\/podpora\/"},{"@type":"ListItem","position":2,"name":"Docker &#8211; 3. Volume"}]},{"@type":"WebSite","@id":"https:\/\/www.websupport.cz\/podpora\/#website","url":"https:\/\/www.websupport.cz\/podpora\/","name":"Websupport Centrum n\u00e1pov\u011bdy","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.websupport.cz\/podpora\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"cs"}]}},"_links":{"self":[{"href":"https:\/\/www.websupport.cz\/podpora\/wp-json\/wp\/v2\/ht-kb\/790","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.websupport.cz\/podpora\/wp-json\/wp\/v2\/ht-kb"}],"about":[{"href":"https:\/\/www.websupport.cz\/podpora\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/www.websupport.cz\/podpora\/wp-json\/wp\/v2\/users\/3"}],"version-history":[{"count":4,"href":"https:\/\/www.websupport.cz\/podpora\/wp-json\/wp\/v2\/ht-kb\/790\/revisions"}],"predecessor-version":[{"id":7100,"href":"https:\/\/www.websupport.cz\/podpora\/wp-json\/wp\/v2\/ht-kb\/790\/revisions\/7100"}],"wp:attachment":[{"href":"https:\/\/www.websupport.cz\/podpora\/wp-json\/wp\/v2\/media?parent=790"}],"wp:term":[{"taxonomy":"ht_kb_category","embeddable":true,"href":"https:\/\/www.websupport.cz\/podpora\/wp-json\/wp\/v2\/ht-kb-category?post=790"},{"taxonomy":"ht_kb_tag","embeddable":true,"href":"https:\/\/www.websupport.cz\/podpora\/wp-json\/wp\/v2\/ht-kb-tag?post=790"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}