{"id":32873,"date":"2019-10-31T21:49:25","date_gmt":"2019-10-31T18:49:25","guid":{"rendered":"https:\/\/prohoster.info\/blog\/izuchaem-docker-chast-6-rabota-s-dannymi\/"},"modified":"2019-10-31T21:49:25","modified_gmt":"2019-10-31T18:49:25","slug":"izuchaem-docker-chast-6-rabota-s-dannymi","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/izuchaem-docker-chast-6-rabota-s-dannymi","title":{"rendered":"Studujeme Docker, \u010d\u00e1st 6: pr\u00e1ce s daty","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>V dne\u0161n\u00edm pokra\u010dov\u00e1n\u00ed na\u0161\u00ed s\u00e9rie materi\u00e1l\u016f o Dockeru se budeme zab\u00fdvat prac\u00ed s daty, konkr\u00e9tn\u011b s Docker volumes. V t\u011bchto materi\u00e1lech jsme neust\u00e1le srovn\u00e1vali softwarov\u00e9 mechanismy Dockera s r\u016fzn\u00fdmi jedl\u00fdmi analogy. Nep\u0159ejdeme od t\u00e9to tradice ani zde. Data v Dockeru m\u016f\u017eeme pova\u017eovat za ko\u0159en\u00ed. Ve sv\u011bt\u011b existuje mnoho druh\u016f ko\u0159en\u00ed, a v Dockeru existuje mnoho zp\u016fsob\u016f, jak pracovat s daty.<\/p>\n<p>\u2192 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/438796\/\">\u010c\u00e1st 1: z\u00e1klady<\/a><\/noindex><br \/>\n\u2192 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/439978\/\">\u010c\u00e1st 2: term\u00edny a koncepty<\/a><\/noindex><br \/>\n\u2192 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/439980\/\">\u010c\u00e1st 3: Dockerfile<\/a><\/noindex><br \/>\n\u2192 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/440658\/\">\u010c\u00e1st 4: zmen\u0161en\u00ed velikosti obraz\u016f a urychlen\u00ed jejich vytv\u00e1\u0159en\u00ed<\/a><\/noindex><br \/>\n\u2192 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/440660\/\">\u010c\u00e1st 5: p\u0159\u00edkazy<\/a><\/noindex><br \/>\n\u2192 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/441574\/\">\u010c\u00e1st 6: pr\u00e1ce s daty<\/a><\/noindex><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/441574\/\"><img decoding=\"async\" alt=\"Studujeme Docker, \u010d\u00e1st 6: pr\u00e1ce s daty\" src=\"\/wp-content\/uploads\/2019\/05\/b46a9525df1a3ed70d8e2625fbfd42f6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nVezm\u011bte pros\u00edm na v\u011bdom\u00ed, \u017ee tento materi\u00e1l byl p\u0159ipraven pomoc\u00ed Docker engine verze 18.09.1 a API verze <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/engine\/api\/version-history\/\">1.39<\/a><\/noindex>.<\/p>\n<p>Data v Dockeru mohou b\u00fdt ulo\u017eena bu\u010f do\u010dasn\u011b, nebo trvale. Za\u010dn\u011bme s do\u010dasn\u00fdmi daty.<\/p>\n<h2>Do\u010dasn\u00e9 uchov\u00e1v\u00e1n\u00ed dat<\/h2>\n<p>\nV kontejnerech Docker lze organizovat pr\u00e1ci s do\u010dasn\u00fdmi daty dv\u011bma zp\u016fsoby.<\/p>\n<p>Ve v\u00fdchoz\u00edm nastaven\u00ed se soubory, kter\u00e9 aplikace vytv\u00e1\u0159\u00ed v kontejneru, ukl\u00e1daj\u00ed do vrstvy kontejneru, kter\u00e1 podporuje z\u00e1pis. Aby tento mechanismus fungoval, nen\u00ed t\u0159eba nic speci\u00e1ln\u011b nastavovat. D\u00e1v\u00e1 to mo\u017enost levn\u00e9ho a efektivn\u00edho \u0159e\u0161en\u00ed. Aplikaci sta\u010d\u00ed jednodu\u0161e ulo\u017eit data a pokra\u010dovat v b\u011bhu. Nicm\u00e9n\u011b jakmile kontejner p\u0159estane existovat, zmiz\u00ed i data ulo\u017een\u00e1 t\u00edmto jednoduch\u00fdm zp\u016fsobem.<\/p>\n<p>Pro uchov\u00e1v\u00e1n\u00ed do\u010dasn\u00fdch soubor\u016f v Dockeru je k dispozici dal\u0161\u00ed \u0159e\u0161en\u00ed, kter\u00e9 je vhodn\u00e9 pro p\u0159\u00edpady, kdy je zapot\u0159eb\u00ed vy\u0161\u0161\u00ed \u00farove\u0148 v\u00fdkonu ve srovn\u00e1n\u00ed s t\u00edm, co lze dos\u00e1hnout pou\u017eit\u00edm standardn\u00edho mechanismu do\u010dasn\u00e9ho uchov\u00e1v\u00e1n\u00ed dat. Pokud nepot\u0159ebujete, aby va\u0161e data byla uchov\u00e1v\u00e1na d\u00e9le, ne\u017e existuje kontejner, m\u016f\u017eete k n\u011bmu p\u0159ipojit tmpfs - do\u010dasn\u00e9 \u00falo\u017ei\u0161t\u011b informac\u00ed, kter\u00e9 vyu\u017e\u00edv\u00e1 pam\u011b\u0165 hostitele. To umo\u017en\u00ed urychlit operace z\u00e1pisu a \u010dten\u00ed dat.<\/p>\n<p>\u010casto je t\u0159eba uchov\u00e1vat data i po tom, co kontejner p\u0159estane existovat. K tomu n\u00e1m pomohou mechanismy trval\u00e9ho uchov\u00e1v\u00e1n\u00ed dat.<\/p>\n<h2>Trval\u00e9 ukl\u00e1d\u00e1n\u00ed dat<\/h2>\n<p>\nExistuj\u00ed dva zp\u016fsoby, jak prodlou\u017eit \u017eivotnost dat nad r\u00e1mec \u017eivotnosti kontejneru. Jedn\u00edm z t\u011bchto zp\u016fsob\u016f je pou\u017eit\u00ed technologie bind mount. Tento p\u0159\u00edstup umo\u017e\u0148uje p\u0159ipojit nap\u0159\u00edklad skute\u010dn\u00fd adres\u00e1\u0159 k kontejneru. S daty ulo\u017een\u00fdmi v takov\u00e9m adres\u00e1\u0159i budou moci pracovat i procesy mimo Docker. Takhle <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/storage\/volumes\/\">vypadaj\u00ed<\/a><\/noindex> p\u0159ipojen\u00ed tmpfs a technologie bind mount.<\/p>\n<p><img decoding=\"async\" alt=\"Studujeme Docker, \u010d\u00e1st 6: pr\u00e1ce s daty\" src=\"\/wp-content\/uploads\/2019\/05\/73b9b7fd59b1321edb9f58953285d8d5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>P\u0159ipojen\u00ed tmpfs a bind mount<\/i><\/p>\n<p>Nev\u00fdhody pou\u017eit\u00ed technologie bind mount spo\u010d\u00edvaj\u00ed v tom, \u017ee jej\u00ed pou\u017eit\u00ed komplikuje z\u00e1lohov\u00e1n\u00ed dat, migraci dat a sd\u00edlen\u00ed dat mezi n\u011bkolika kontejnery. Pro trval\u00e9 uchov\u00e1n\u00ed dat je mnohem lep\u0161\u00ed pou\u017e\u00edt svazky Docker.<\/p>\n<h2>Svazky Docker<\/h2>\n<p>\nSvazek je souborov\u00fd syst\u00e9m um\u00edst\u011bn\u00fd na hostitelsk\u00e9m stroji mimo kontejnery. Vytv\u00e1\u0159en\u00edm a spr\u00e1vou svazk\u016f se zab\u00fdv\u00e1 Docker. Zde jsou hlavn\u00ed vlastnosti svazk\u016f Docker:<\/p>\n<ul>\n<li>Jsou to prost\u0159edky pro trval\u00e9 uchov\u00e1n\u00ed informac\u00ed.<\/li>\n<li>Jsou samostatn\u00e9 a odd\u011blen\u00e9 od kontejner\u016f.<\/li>\n<li>Mohou je spole\u010dn\u011b pou\u017e\u00edvat r\u016fzn\u00e9 kontejnery.<\/li>\n<li>Umo\u017e\u0148uj\u00ed efektivn\u00ed \u010dten\u00ed a z\u00e1pis dat.<\/li>\n<li>Svazky lze um\u00edstit na zdroje vzd\u00e1len\u00e9ho cloudov\u00e9ho poskytovatele.<\/li>\n<li>Mohou b\u00fdt \u0161ifrov\u00e1ny.<\/li>\n<li>Lze jim p\u0159i\u0159azovat n\u00e1zvy.<\/li>\n<li>Kontejner m\u016f\u017ee p\u0159edem naplnit svazek daty.<\/li>\n<li>Jsou vhodn\u00e9 pro testov\u00e1n\u00ed.<\/li>\n<\/ul>\n<p>\nJak vid\u00edte, svazky Docker maj\u00ed vynikaj\u00edc\u00ed vlastnosti. Poj\u010fme si \u0159\u00edct, jak je vytvo\u0159it.<\/p>\n<h2>Vytv\u00e1\u0159en\u00ed svazk\u016f<\/h2>\n<p>\nSvazky lze vytv\u00e1\u0159et prost\u0159ednictv\u00edm Dockeru nebo pomoc\u00ed API po\u017eadavk\u016f.<\/p>\n<p>Zde je instrukce v Dockerfile, kter\u00e1 umo\u017e\u0148uje vytvo\u0159it svazek p\u0159i spu\u0161t\u011bn\u00ed kontejneru.<\/p>\n<pre><code class=\"plaintext\">VOLUME \/my_volume<\/code><\/pre>\n<p>\nPou\u017eit\u00edm takov\u00e9 instrukce Docker po vytvo\u0159en\u00ed kontejneru vytvo\u0159\u00ed svazek obsahuj\u00edc\u00ed data, kter\u00e1 ji\u017e existuj\u00ed na uveden\u00e9m m\u00edst\u011b. V\u0161imn\u011bte si, \u017ee pokud vytv\u00e1\u0159\u00edte svazek pomoc\u00ed Dockerfile, nezbavuje v\u00e1s to povinnosti uv\u00e9st m\u00edsto p\u0159ipojen\u00ed svazku.<\/p>\n<p>Svazky lze vytv\u00e1\u0159et v Dockerfile tak\u00e9 pomoc\u00ed form\u00e1tu JSON.<\/p>\n<p>Krom\u011b toho lze svazky vytv\u00e1\u0159et prost\u0159ednictv\u00edm p\u0159\u00edkazov\u00e9ho \u0159\u00e1dku b\u011bhem provozu kontejneru.<\/p>\n<h2>Pr\u00e1ce se svazky z p\u0159\u00edkazov\u00e9ho \u0159\u00e1dku<\/h2>\n<p><\/p>\n<h3>\u258dVytv\u00e1\u0159en\u00ed svazku<\/h3>\n<p>\nSamostatn\u00fd svazek lze vytvo\u0159it n\u00e1sleduj\u00edc\u00edm p\u0159\u00edkazem:<\/p>\n<pre><code class=\"plaintext\">docker volume create --name my_volume<\/code><\/pre>\n<p><\/p>\n<h3>\u258dZji\u0161t\u011bn\u00ed informac\u00ed o svazc\u00edch<\/h3>\n<p>\nAbyste zobrazili seznam svazk\u016f Docker, pou\u017eijte n\u00e1sleduj\u00edc\u00ed p\u0159\u00edkaz:<\/p>\n<pre><code class=\"plaintext\">docker volume ls<\/code><\/pre>\n<p>\nKonkr\u00e9tn\u00ed svazek m\u016f\u017eete prozkoumat takto:<\/p>\n<pre><code class=\"plaintext\">docker volume inspect my_volume<\/code><\/pre>\n<p><\/p>\n<h3>\u258dOdstran\u011bn\u00ed svazku<\/h3>\n<p>\nSvazek m\u016f\u017eete odstranit takto:<\/p>\n<pre><code class=\"plaintext\">docker volume rm my_volume<\/code><\/pre>\n<p>\nChcete-li odstranit v\u0161echny svazky, kter\u00e9 nejsou pou\u017e\u00edv\u00e1ny kontejnery, m\u016f\u017eete pou\u017e\u00edt n\u00e1sleduj\u00edc\u00ed p\u0159\u00edkaz:<\/p>\n<pre><code class=\"plaintext\">docker volume prune<\/code><\/pre>\n<p>\nP\u0159ed odstran\u011bn\u00edm svazk\u016f v\u00e1s Docker po\u017e\u00e1d\u00e1 o potvrzen\u00ed proveden\u00ed t\u00e9to operace.<\/p>\n<p>Pokud je svazek spojen s n\u011bjak\u00fdm kontejnerem, takov\u00fd svazek nelze odstranit, dokud nen\u00ed odpov\u00eddaj\u00edc\u00ed kontejner odstran\u011bn. I kdy\u017e je kontejner odstran\u011bn, Docker to nemus\u00ed v\u017edy spr\u00e1vn\u011b rozpoznat. Pokud se to stane \u2014 pou\u017eijte n\u00e1sleduj\u00edc\u00ed p\u0159\u00edkaz:<\/p>\n<pre><code class=\"plaintext\">docker system prune<\/code><\/pre>\n<p>\nTen slou\u017e\u00ed k \u010di\u0161t\u011bn\u00ed zdroj\u016f Dockeru. Po vykon\u00e1n\u00ed tohoto p\u0159\u00edkazu byste m\u011bli m\u00edt mo\u017enost odstranit svazky, jejich\u017e stav byl d\u0159\u00edve nespr\u00e1vn\u011b ur\u010den.<\/p>\n<h2>P\u0159\u00edznaky \u2014mount a \u2014volume<\/h2>\n<p>\nP\u0159i pr\u00e1ci se svazky, budete muset p\u0159i vyvol\u00e1n\u00ed p\u0159\u00edkazu <code>docker<\/code>, \u010dasto pou\u017e\u00edvat p\u0159\u00edznaky. Nap\u0159\u00edklad, abyste vytvo\u0159ili svazek b\u011bhem vytv\u00e1\u0159en\u00ed kontejneru, m\u016f\u017eete pou\u017e\u00edt tuto konstrukci:<\/p>\n<pre><code class=\"plaintext\">docker container run --mount source=my_volume, target=\\\/container\\\/path\\\/for\\\/volume my_image<\/code><\/pre>\n<p>\nD\u0159\u00edve (p\u0159ed rokem 2017) byl popul\u00e1rn\u00ed p\u0159\u00edznak <code>--volume<\/code>. Tento p\u0159\u00edznak (je\u0161t\u011b se d\u00e1 pou\u017e\u00edvat ve zkr\u00e1cen\u00e9 podob\u011b, pak vypad\u00e1 jako <code>-v<\/code>) byl p\u016fvodn\u011b ur\u010den pro samostatn\u00e9 kontejnery, zat\u00edmco p\u0159\u00edznak <code>--mount<\/code> se pou\u017e\u00edval v prost\u0159ed\u00ed Docker Swarm. Od Dockeru 17.06 lze v\u0161ak p\u0159\u00edznak <code>--mount<\/code> pou\u017e\u00edvat v jak\u00fdchkoli sc\u00e9n\u00e1\u0159\u00edch.<\/p>\n<p>Je t\u0159eba poznamenat, \u017ee p\u0159i pou\u017e\u00edv\u00e1n\u00ed p\u0159\u00edznaku <code>--mount<\/code> se zvy\u0161uje objem dodate\u010dn\u00fdch \u00fadaj\u016f, kter\u00e9 je t\u0159eba uv\u00e9st v p\u0159\u00edkazu, ale z n\u011bkolika d\u016fvod\u016f je lep\u0161\u00ed pou\u017e\u00edvat pr\u00e1v\u011b tento p\u0159\u00edznak, a ne <code>--volume<\/code>. P\u0159\u00edznak <code>--mount<\/code> je jedin\u00fd mechanismus, kter\u00fd umo\u017e\u0148uje pracovat se slu\u017ebami nebo uv\u00e1d\u011bt parametry ovlada\u010de svazku. Nav\u00edc, pr\u00e1ce s t\u00edmto p\u0159\u00edznakem je snaz\u0161\u00ed.<\/p>\n<p>V existuj\u00edc\u00edch p\u0159\u00edkladech p\u0159\u00edkaz\u016f pro pr\u00e1ci s daty v Dockeru m\u016f\u017eete naj\u00edt \u0159adu p\u0159\u00edklad\u016f pou\u017eit\u00ed p\u0159\u00edznaku <code>-v<\/code>. Kdy\u017e se sna\u017e\u00edte p\u0159izp\u016fsobit tyto p\u0159\u00edkazy pro sebe, berte v \u00favahu, \u017ee p\u0159\u00edznaky <code>--mount<\/code> a <code>--volume<\/code> pou\u017e\u00edvaj\u00ed r\u016fzn\u00e9 form\u00e1ty parametr\u016f. To znamen\u00e1, \u017ee nem\u016f\u017eete jednodu\u0161e nahradit <code>-v<\/code> na <code>--mount<\/code> a z\u00edskat funk\u010dn\u00ed p\u0159\u00edkaz.<\/p>\n<p>Hlavn\u00ed rozd\u00edl mezi <code>--mount<\/code> a <code>--volume<\/code> spo\u010d\u00edv\u00e1 v tom, \u017ee p\u0159i pou\u017eit\u00ed p\u0159\u00edznaku <code>--volume<\/code> se v\u0161echny parametry sdru\u017euj\u00ed dohromady, v jednom poli, zat\u00edmco p\u0159i pou\u017eit\u00ed <code>--mount<\/code> parametry jsou odd\u011bleny.<\/p>\n<p>P\u0159i pr\u00e1ci s <code>--mount<\/code> parametry jsou prezentov\u00e1ny jako p\u00e1ry kl\u00ed\u010d-hodnota, konkr\u00e9tn\u011b to vypad\u00e1 jako <code>key=value<\/code>. Tyto p\u00e1ry odd\u011bluj\u00ed \u010d\u00e1rky. Zde jsou \u010dasto pou\u017e\u00edvan\u00e9 parametry <code>--mount<\/code>:<\/p>\n<ul>\n<li><code>type<\/code> \u2014 typ mont\u00e1\u017ee. Hodnotou pro odpov\u00eddaj\u00edc\u00ed kl\u00ed\u010d mohou b\u00fdt <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/storage\/bind-mounts\/\">bind<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/storage\/volumes\/\">volume<\/a><\/noindex> nebo <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/storage\/tmpfs\/\">tmpfs<\/a><\/noindex>. Zde hovo\u0159\u00edme o svazc\u00edch, tedy n\u00e1s zaj\u00edm\u00e1 hodnota <code>volume<\/code>.<\/li>\n<li><code>source<\/code> \u2014 zdroj mont\u00e1\u017ee. Pro pojmenovan\u00e9 svazky je to \u2014 jm\u00e9no svazku. U nepojmenovan\u00fdch svazk\u016f tento kl\u00ed\u010d neuvedeme. M\u016f\u017ee b\u00fdt zkr\u00e1cen na <code>src<\/code>.<\/li>\n<li><code>c\u00edlov\u00e1 destinace<\/code> \u2014 cesta, na kterou se soubor nebo slo\u017eka p\u0159imountuje v kontejneru. Tento kl\u00ed\u010d m\u016f\u017ee b\u00fdt zkr\u00e1cen na <code>dst<\/code> nebo <code>target<\/code>.<\/li>\n<li><code>readonly<\/code> \u2014 p\u0159imountuje svazek, kter\u00fd je ur\u010den <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/storage\/volumes\/#use-a-read-only-volume\">pouze pro \u010dten\u00ed<\/a><\/noindex>. Pou\u017eit\u00ed tohoto kl\u00ed\u010de nen\u00ed povinn\u00e9, hodnota mu nen\u00ed p\u0159i\u0159azena.<\/li>\n<\/ul>\n<p>\nZde je p\u0159\u00edklad pou\u017eit\u00ed <code>--mount<\/code> se spoustou parametr\u016f:<\/p>\n<pre><code class=\"plaintext\">docker run --mount type=volume,source=volume_name,destination=\\\/path\\\/in\\\/container,readonly my_image<\/code><\/pre>\n<p><\/p>\n<h2>Z\u00e1v\u011bry<\/h2>\n<p>\nZde jsou u\u017eite\u010dn\u00e9 p\u0159\u00edkazy, kter\u00e9 m\u016f\u017eete pou\u017e\u00edt p\u0159i pr\u00e1ci se svazky Dockeru:<\/p>\n<ul>\n<li><code>docker volume create<\/code><\/li>\n<li><code>docker volume ls<\/code><\/li>\n<li><code>docker volume inspect<\/code><\/li>\n<li><code>docker volume rm<\/code><\/li>\n<li><code>docker volume prune<\/code><\/li>\n<\/ul>\n<p>\nZde je seznam \u010dasto pou\u017e\u00edvan\u00fdch parametr\u016f pro <code>--mount<\/code>, aplikovateln\u00fdch v p\u0159\u00edkaz\u011b typu <code>docker run --mount my_options my_image<\/code>:<\/p>\n<ul>\n<li><code>type=volume<\/code><\/li>\n<li><code>source=volume_name<\/code><\/li>\n<li><code>destination=\\\/path\\\/in\\\/container<\/code><\/li>\n<li><code>readonly<\/code><\/li>\n<\/ul>\n<p>\nNyn\u00ed, kdy\u017e jsme dokon\u010dili tuto s\u00e9rii materi\u00e1l\u016f o Dockeru, je \u010das \u0159\u00edci p\u00e1r slov o tom, kam se mohou ti, kte\u0159\u00ed se u\u010d\u00ed Docker, posunout d\u00e1l. <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.freecodecamp.org\/a-beginner-friendly-introduction-to-containers-vms-and-docker-79a9e3e119b\">Tady<\/a><\/noindex> skv\u011bl\u00fd a rozs\u00e1hl\u00fd \u010dl\u00e1nek o Dockeru. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/Docker-Deep-Dive-Nigel-Poulton-ebook\/dp\/B01LXWQUFF\">Tady<\/a><\/noindex> kniha o Dockeru (p\u0159i koupi t\u00e9to knihy se sna\u017ete z\u00edskat jej\u00ed nejnov\u011bj\u0161\u00ed vyd\u00e1n\u00ed). <noindex><a rel=\"nofollow\" href=\"https:\/\/dockerbook.com\/\">Tady<\/a><\/noindex> je\u0161t\u011b jedna kniha, kter\u00e1 se hod\u00ed t\u011bm, kte\u0159\u00ed se domn\u00edvaj\u00ed, \u017ee praxe je nejlep\u0161\u00edm zp\u016fsobem studia technologi\u00ed.<\/p>\n<p><b>V\u00e1\u017een\u00ed \u010dten\u00e1\u0159i!<\/b> Jak\u00e9 materi\u00e1ly o Dockeru byste doporu\u010dili, aby studovali nov\u00e1\u010dci?<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/ruvds.com\/ru-rub\/#order\"><img decoding=\"async\" alt=\"Studujeme Docker, \u010d\u00e1st 6: pr\u00e1ce s daty\" src=\"\/wp-content\/uploads\/2019\/05\/78a5dd35cfae6d1e291f175957207436.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/441574\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0441\u0435\u0440\u0438\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043e Docker \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u2014 \u043e \u0442\u043e\u043c\u0430\u0445 Docker. \u0412 \u044d\u0442\u0438\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430\u0445 \u043c\u044b \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043b\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b Docker \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u044a\u0435\u0434\u043e\u0431\u043d\u044b\u043c\u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u044f\u043c\u0438. \u041d\u0435 \u0431\u0443\u0434\u0435\u043c \u043e\u0442\u0445\u043e\u0434\u0438\u0442\u044c \u043e\u0442 \u044d\u0442\u043e\u0439 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u0438 \u0438 \u0437\u0434\u0435\u0441\u044c. \u0414\u0430\u043d\u043d\u044b\u0435 \u0432 Docker \u043f\u0443\u0441\u0442\u044c \u0431\u0443\u0434\u0443\u0442 \u0441\u043f\u0435\u0446\u0438\u044f\u043c\u0438. \u0412 \u043c\u0438\u0440\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u0438\u0434\u043e\u0432 \u0441\u043f\u0435\u0446\u0438\u0439, \u0430 \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24642,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32873","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.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0441\u0435\u0440\u0438\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043e Docker \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u2014 \u043e \u0442\u043e\u043c\u0430\u0445 Docker.\" \/>\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\/cs\/blog\/administrirovanie\/izuchaem-docker-chast-6-rabota-s-dannymi\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\u0418\u0437\u0443\u0447\u0430\u0435\u043c Docker, \u0447\u0430\u0441\u0442\u044c 6: \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0441\u0435\u0440\u0438\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043e Docker \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u2014 \u043e \u0442\u043e\u043c\u0430\u0445 Docker.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/izuchaem-docker-chast-6-rabota-s-dannymi\" \/>\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:49:25+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:49:25+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\udd47U\u010d\u00edme se Docker, \u010d\u00e1st 6: pr\u00e1ce s daty | ProHoster","description":"V dne\u0161n\u00ed \u010d\u00e1sti p\u0159ekladu s\u00e9rie materi\u00e1l\u016f o Dockeru se budeme bavit o pr\u00e1ci s daty. Konkr\u00e9tn\u011b o svazc\u00edch Dockeru.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/izuchaem-docker-chast-6-rabota-s-dannymi","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\u0418\u0437\u0443\u0447\u0430\u0435\u043c Docker, \u0447\u0430\u0441\u0442\u044c 6: \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 | ProHoster","og:description":"\u0412 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0441\u0435\u0440\u0438\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043e Docker \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u2014 \u043e \u0442\u043e\u043c\u0430\u0445 Docker.","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/izuchaem-docker-chast-6-rabota-s-dannymi","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:49:25+00:00","article:modified_time":"2019-10-31T18:49:25+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32873","title":null,"description":null,"keywords":null,"keyphrases":{"focus":[],"additional":[]},"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 12:57:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 18:56:03","updated":"2026-08-11 12:50:34","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/32873","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=32873"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/32873\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/24642"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=32873"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=32873"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=32873"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}