Prehľad Dockeru, časť 6: práca s dátami

V dnešnej časti prekladu série materiálov o Dockeri sa budeme zaoberať prácou s dátami. Konkrétne sa pozrieme na objemy Dockeru. V týchto materiáloch sme neustále porovnávali softvérové mechanizmy Dockeru s rôznymi jedlami. Neodbočíme od tejto tradície ani tu. Dátam v Dockeri môžeme dať podobu korenín. Na svete existuje množstvo druhov korenín a v Dockeri množstvo spôsobov práce s dátami.

→ časť 1: základy
→ časť 2: pojmy a koncepcie
→ časť 3: súbory Dockerfile
→ časť 4: zmenšovanie veľkosti obrazov a zrýchlenie ich zostavovania
→ časť 5: príkazy
→ časť 6: práca s dátami

Prehľad Dockeru, časť 6: práca s dátami

Upozorňujeme, že tento materiál bol pripravený pomocou enginu Docker verzie 18.09.1 a API verzie 1.39.

Dáta v Dockeri môžu byť uložené buď dočasne, alebo trvalo. Začneme s dočasnými dátami.

Dočasné ukladanie dát

V dockerových kontajneroch je možné organizovať prácu s dočasnými dátami dvoma spôsobmi.

Predvolene sú súbory, ktoré vytvára aplikácia pracujúca v kontajneri, ukladané v vrstve kontajnera podporujúcej zápis. Aby tento mechanizmus fungoval, nie je potrebné nič špeciálne nastavovať. Ide o lacné a účinné riešenie. Aplikácii stačí jednoducho uložiť údaje a pokračovať vo svojej práci. Avšak, keď kontajner prestane existovať, zmiznú aj údaje uložené týmto jednoduchým spôsobom.

Na ukladanie dočasných súborov v Dockeri môžete využiť ešte jedno riešenie, vhodné pre prípady, keď je potrebný vyšší výkon v porovnaní s tým, ktorý je dosiahnuteľný pomocou štandardného mechanizmu dočasného ukladania dát. Ak nepotrebujete, aby vaše dáta boli uložené dlhšie, ako existuje kontajner, môžete pripojiť k kontajneru tmpfs - dočasné úložisko informácií, ktoré využíva operačnú pamäť hostiteľského systému. To urýchli vykonávanie operácií zapisovania a čítania dát.

Často sa stáva, že dáta je potrebné uchovávať aj po tom, ako kontajner prestane existovať. Na to nám prídu vhod mechanizmy trvalého ukladania dát.

Trvalé ukladanie dát

Existujú dva spôsoby, ako predĺžiť životnosť dát nad rámec životnosti kontajnera. Jedným z prístupov je technológia bind mount. Pri tomto prístupe môžete k kontajneru pripojiť skutočne existujúcu zložku. S dátami uloženými v tejto zložke môžu pracovať aj procesy mimo Dockeru. Takto vyzerajú pripojenie tmpfs a technológia bind mount.

Prehľad Dockeru, časť 6: práca s dátami
Pripojenie tmpfs a bind mount

Nevýhody používania technológie bind mount spočívajú v tom, že komplikuje zálohovanie dát, migráciu dát a zdieľanie dát medzi viacerými kontajnermi. Pre trvalé uchovávanie dát je oveľa lepšie používať Docker volume.

Docker volume

Volume je súborový systém, ktorý sa nachádza na hostiteľskom stroji mimo kontajnerov. Spravovanie a vytváranie volume zabezpečuje Docker. Tu sú hlavné vlastnosti Docker volume:

  • Sú to prostriedky na trvalé uchovávanie informácií.
  • Sú samostatné a oddelené od kontajnerov.
  • Môžu sa zdieľať medzi rôznymi kontajnermi.
  • Umožňujú efektívne čítanie a zapisovanie dát.
  • Volume sa dajú umiestniť na zdrojoch vzdialeného cloudového poskytovateľa.
  • Môžu sa šifrovať.
  • Môžu sa nazývať.
  • Kontajner môže vopred naplniť volume dátami.
  • Sú vhodné na testovanie.

Ako vidíte, Docker volume majú vynikajúce vlastnosti. Poďme si povedať, ako ich vytvárať.

Vytváranie volume

Volume môžete vytvárať pomocou Docker alebo prostredníctvom API požiadaviek.

Tu je inštrukcia v Dockerfile, ktorá umožňuje vytvoriť volume pri spustení kontajnera.

VOLUME /my_volume

Pri použití takejto inštrukcie Docker vytvorí volume obsahujúce dáta, ktoré už sú na uvedenom mieste, po vytvorení kontajnera. Všimnite si, že ak vytvárate volume pomocou Dockerfile, nezbavuje vás to potreby uviesť bod pripojenia volume.

Vytvárať volume v Dockerfile môžete aj v JSON formáte.

Okrem toho je možné volume vytvárať pomocou príkazového riadku počas behu kontajnera.

Práca s volume z príkazového riadku

▍Vytvorenie volume

Samostatné volume môžete vytvoriť nasledujúcim príkazom:

docker volume create --name my_volume

▍Získanie informácií o volume

Aby ste si mohli zobraziť zoznam Docker zväzkov, použite nasledujúci príkaz:

docker volume ls

Konkrétny zväzok môžete preskúmať takto:

docker volume inspect my_volume

▍Odstránenie zväzku

Zväzok môžete odstrániť takto:

docker volume rm my_volume

Ak chcete odstrániť všetky zväzky, ktoré nie sú používané kontajnermi, môžete použiť nasledujúci príkaz:

docker volume prune

Pred odstránením zväzkov vás Docker požiada o potvrdenie tejto operácie.

Ak je zväzok spojený s nejakým kontajnerom, taký zväzok nemožno odstrániť, kým nie je odstránený príslušný kontajner. Aj keď je kontajner odstránený, Docker to nemusí vždy správne pochopiť. Ak k tomu dôjde, môžete použiť nasledujúci príkaz:

docker system prune

Tento príkaz slúži na čistenie zdrojov Docker. Po vykonaní tohto príkazu by ste mali mať možnosť odstrániť zväzky, ktorých stav bol predtým nesprávny.

Príznaky —mount a —volume

Pri práci so zväzkami budete pri volaní príkazu dockerčasto musieť používať príznaky. Napríklad, ak chcete vytvoriť zväzok pri vytváraní kontajnera, môžete použiť takúto konštrukciu:

docker container run --mount source=my_volume, target=\/container\/path\/for\/volume my_image

V minulosti (pred rokom 2017) bol populárny príznak --volume. Pôvodne sa tento príznak (ešte ho môžete používať v skrátenej forme, vtedy vyzerá ako -v) používal pre samostatné kontajnery, zatiaľ čo príznak --mount bol určený pre prostredie Docker Swarm. Avšak od verzie Docker 17.06 je možné používať príznak --mount v akýchkoľvek scénaroch.

Je potrebné poznamenať, že pri používaní príznaku --mount sa zvyšuje objem doplnkových údajov, ktoré je potrebné uviesť v príkaze, ale z niekoľkých dôvodov je lepšie použiť práve tento príznak, a nie --volume. Príznak --mount — je to jediný mechanizmus, ktorý umožňuje pracovať so službami alebo uvádzať parametre ovládača zväzku. Okrem toho je jednoduchšie pracovať s týmto príznakom.

Vo existujúcich príkladoch príkazov, ktoré sa zameriavajú na prácu s údajmi v Dockeri, môžete stretnúť množstvo príkladov používania príznaku -v. Pri snahe prispôsobiť si tieto príkazy majte na pamäti, že príznaky --mount a --volume používajú rôzne formáty parametrov. To znamená, že nemôžete len jednoducho nahradiť -v na --mount a získať funkčný príkaz.

Hlavným rozdielom medzi --mount a --volume je to, že pri použití príznaku --volume sa všetky parametre zhromažďujú na jednom mieste, zatiaľ čo pri použití --mount parametre sú oddelené.

Pri práci s --mount parametre sú prezentované ako páry kľúč-hodnota, konkrétne to vyzerá ako key=value. Tieto páry sú oddelené čiarkami. Tu sú často používané parametre --mount:

  • type — typ pripojenia. Hodnotou pre zodpovedajúci kľúč môžu byť bind, volume alebo tmpfs. Rozprávame sa tu o objemoch, teda nás zaujíma hodnota volume.
  • source — zdroj pripojenia. Pre pomenované objemy je to — názov objemu. Pre nepomenované objemy tento kľúč nie je uvedený. Môže byť skrátený na src.
  • cieľ — cesta, na ktorú je súbor alebo priečinok pripojený v kontejnery. Tento kľúč môže byť skrátený na dst alebo target.
  • readonly — pripojí objem, ktorý je určený iba na čítanie. Použitie tohto kľúča nie je povinné, hodnota mu nie je priradená.

Tu je príklad použitia --mount s mnohými parametrami:

docker run --mount type=volume,source=volume_name,destination=\/path\/in\/container,readonly my_image

Zhrnutie

Tu sú užitočné príkazy, ktoré môžete používať pri práci s objemami Docker:

  • docker volume create
  • docker volume ls
  • docker volume inspect
  • docker volume rm
  • docker volume prune

Tu je zoznam často používaných parametrov pre --mount, aplikovateľných v príkaze typu docker run --mount my_options my_image:

  • type=volume
  • source=volume_name
  • destination=\/path\/in\/container
  • readonly

Teraz, keď sme uzavreli túto sériu materiálov o Dockeri, prišiel čas povedať pár slov o tom, kam sa môžu tí, ktorí sa učia Docker, posunúť ďalej. Tu sú veľký dobrý článok o Dockeri. Tu sú kniha o Dockeri (keď si túto knihu kupujete, snažte sa získať najnovšie vydanie). Tu sú ešte jedna kniha, ktorá bude vyhovovať tým, ktorí sa domnievajú, že prax je najlepší spôsob učenia sa technológií.

Vážení čitatelia! Aké materiály o Dockeri by ste odporučili študentom začiatočníkom?

Prehľad Dockeru, časť 6: práca s dátami

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster