Learning Docker, Časť 6: Práca s údajmi

V dnešnej časti prekladu série materiálov o Dockeri si povieme niečo o práci s dátami. Najmä o zväzkoch Docker. V týchto materiáloch sme neustále porovnávali programovacie mechanizmy Docker s rôznymi jedlými analógiami. Tu sa od tejto tradície neodchýlime. Nech sú údaje v Dockeri korením. Vo svete existuje veľa korenín a Docker má mnoho spôsobov, ako pracovať s dátami.

Časť 1: Základy
Časť 2: pojmy a pojmy
Časť 3: Dockerfiles
Časť 4: Zmenšenie veľkosti obrázkov a urýchlenie ich zostavenia
Časť 5: príkazy
Časť 6: práca s údajmi

Learning Docker, Časť 6: Práca s údajmi

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

Údaje v Dockeri môžu byť uložené buď dočasne, alebo trvalo. Začnime s dočasnými údajmi.

Dočasné ukladanie dát

Existujú dva spôsoby, ako spravovať dočasné údaje v kontajneroch Docker.

V predvolenom nastavení sú súbory vytvorené aplikáciou spustenou v kontajneri uložené v zapisovateľnej vrstve kontajnera. Aby tento mechanizmus fungoval, nie je potrebné nič špeciálne konfigurovať. Ukazuje sa to lacné a veselé. Aplikácia jednoducho potrebuje uložiť dáta a pokračovať v práci po svojom. Po zániku kontajnera však zmiznú aj takto jednoducho uložené dáta.

Dočasné ukladanie súborov v Dockeri je ďalším riešením, ktoré je vhodné pre prípady, keď potrebujete vyššiu úroveň výkonu, než akú je možné dosiahnuť pomocou štandardného mechanizmu dočasného ukladania údajov. Ak nepotrebujete, aby boli vaše údaje uložené dlhšie, než existuje kontajner, môžete sa pripojiť ku kontajneru tmpfs – dočasnému úložisku informácií, ktoré využíva pamäť RAM hostiteľa. To urýchli vykonávanie operácií zápisu a čítania údajov.

Často sa stáva, že dáta je potrebné uchovávať aj po tom, čo kontajner prestane existovať. Aby sme to dosiahli, potrebujeme trvalé mechanizmy ukladania údajov.

Trvalé ukladanie dát

Existujú dva spôsoby, ako predĺžiť životnosť údajov ako životnosť kontajnera. Jedným zo spôsobov je použitie technológie bind mount. Pomocou tohto prístupu môžete na kontajner namontovať napríklad priečinok z reálneho života. S dátami uloženými v takomto priečinku budú môcť pracovať aj procesy mimo Docker. To je ako pozri tmpfs mount a bind mount technológia.

Learning Docker, Časť 6: Práca s údajmi
Montáž tmpfs a väzba mount

Nevýhody použitia technológie bind mount spočívajú v tom, že jej použitie komplikuje zálohovanie dát, migráciu dát, zdieľanie dát medzi viacerými kontajnermi. Na trvalé ukladanie údajov je oveľa lepšie používať zväzky Docker.

Volumes Docker

Zväzok je súborový systém, ktorý sa nachádza na hostiteľskom počítači mimo kontajnerov. Zväzky vytvára a spravuje Docker. Tu sú hlavné vlastnosti zväzkov Docker:

  • Sú prostriedkom trvalého uchovávania informácií.
  • Sú nezávislé a oddelené od kontajnerov.
  • Môžu byť zdieľané medzi rôznymi kontajnermi.
  • Umožňujú vám organizovať efektívne čítanie a zapisovanie údajov.
  • Zväzky možno umiestniť na zdroje vzdialeného poskytovateľa cloudu.
  • Môžu byť šifrované.
  • Môžu dostať mená.
  • Kontajner môže zabezpečiť predbežné vyplnenie zväzku údajmi.
  • Sú vhodné na testovanie.

Ako vidíte, zväzky Docker majú úžasné vlastnosti. Poďme si povedať, ako ich vytvoriť.

Vytváranie zväzkov

Zväzky je možné vytvárať pomocou Docker alebo požiadaviek API.

Tu je pokyn v súbore Dockerfile, ktorý vám umožňuje vytvoriť zväzok pri spustení kontajnera.

VOLUME /my_volume

Pri použití podobnej inštrukcie Docker po vytvorení kontajnera vytvorí zväzok obsahujúci údaje, ktoré už existujú v určenom umiestnení. Upozorňujeme, že ak vytvoríte zväzok pomocou súboru Dockerfile, nezbaví vás to potreby zadať bod pripojenia zväzku.

Zväzky môžete vytvoriť aj v súbore Dockerfile pomocou formátu JSON.

Okrem toho je možné objemy vytvárať pomocou nástrojov príkazového riadka, keď je kontajner spustený.

Práca so zväzkami z príkazového riadku

▍ Vytváranie zväzkov

Samostatný zväzok môžete vytvoriť pomocou nasledujúceho príkazu:

docker volume create —-name my_volume

▍Zistite informácie o objemoch

Ak chcete zobraziť zoznam zväzkov Docker, použite nasledujúci príkaz:

docker volume ls

Môžete preskúmať konkrétny zväzok 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é nepoužívajú kontajnery, 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 priradený ku kontajneru, tento zväzok nemožno odstrániť, kým sa neodstráni zodpovedajúci kontajner. Zároveň, aj keď je kontajner odstránený, Docker to nie vždy chápe. Ak k tomu dôjde, môžete použiť nasledujúci príkaz:

docker system prune

Je určený na čistenie zdrojov Docker. Po vykonaní tohto príkazu by ste mali byť schopní odstrániť zväzky, ktorých stav bol predtým nesprávny.

Príznaky --mount a --volume

Ak chcete pracovať so zväzkami, keď zavoláte príkaz docker, budete často musieť použiť vlajky. Napríklad na vytvorenie zväzku počas vytvárania kontajnera môžete použiť túto konštrukciu:

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

V dávnych dobách (do roku 2017) bola vlajka populárna --volume. Spočiatku táto vlajka (môže byť použitá aj v skrátenej forme, potom to vyzerá -v) bol použitý pre samostatné kontajnery a vlajku --mount - v prostredí Docker Swarm. Od Dockera 17.06 však vlajka --mount možno použiť v akomkoľvek scenári.

Treba si uvedomiť, že pri použití vlajky --mount množstvo dodatočných údajov, ktoré je potrebné zadať v príkaze, sa zvyšuje, ale z niekoľkých dôvodov je lepšie použiť tento konkrétny príznak a nie --volume. Vlajka --mount je jediný mechanizmus, ktorý vám umožňuje pracovať so službami alebo špecifikovať možnosti ovládača zväzku. S touto vlajkou sa tiež ľahšie pracuje.

V existujúcich príkladoch príkazov na manipuláciu s údajmi Docker môžete vidieť veľa príkladov použitia príznaku -v. Keď sa pokúšate prispôsobiť tieto príkazy pre seba, majte na pamäti, že vlajky --mount и --volume použiť rôzne formáty parametrov. To znamená, že nemôžete jednoducho nahradiť -v na --mount a získajte pracovný tím.

Hlavný rozdiel medzi --mount и --volume je to pri použití vlajky --volume všetky parametre sa zhromažďujú v jednom poli a pri použití --mount parametre sú oddelené.

Pri práci s --mount parametre sú reprezentované ako páry kľúč – hodnota, konkrétne to vyzerá key=value. Tieto dvojice sú oddelené čiarkami. Tu sú bežne používané možnosti --mount:

  • type - typ montáže. Hodnota pre príslušný kľúč môže byť viažu, objem alebo tmpfs. Hovoríme tu o objemoch, to znamená, že nás zaujíma hodnota volume.
  • source - montáž zdroja. V prípade pomenovaných zväzkov je to názov zväzku. Pre nepomenované zväzky tento kľúč nie je určený. Dá sa skrátiť na src.
  • destination - cesta, ku ktorej je súbor alebo priečinok pripojený v kontajneri. Tento kľúč je možné skrátiť na dst alebo target.
  • readonly - pripojí objem, ktorý je určený len na čítanie. Použitie tohto kľúča je voliteľné a nie je mu priradená žiadna hodnota.

Tu je príklad použitia --mount s mnohými možnosťami:

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

Výsledky

Tu je niekoľko užitočných príkazov, ktoré môžete použiť pri práci so zväzkami Docker:

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

Tu je zoznam bežne používaných možností pre --mount, použiteľné v príkaze formulára docker run --mount my_options my_image:

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

Teraz, keď sme dokončili túto sériu Docker, je čas povedať pár slov o tom, kam sa môžu študenti Dockera ďalej uberať. Tu výborný článok o Dockerovi. Tu knihu o Dockerovi (pri kúpe tejto knihy sa snažte získať jej najnovšie vydanie). Tu ďalšia kniha pre tých, ktorí si myslia, že prax je najlepší spôsob, ako sa naučiť technológie.

Vážení čitatelia! Aké materiály Docker by ste odporučili začiatočníkom, aby sa naučili?

Learning Docker, Časť 6: Práca s údajmi

Zdroj: hab.com

Pridať komentár