Studujeme Docker, část 6: práce s daty

V dnešním pokračování naší série materiálů o Dockeru se budeme zabývat prací s daty, konkrétně s Docker volumes. V těchto materiálech jsme neustále srovnávali softwarové mechanismy Dockera s různými jedlými analogy. Nepřejdeme od této tradice ani zde. Data v Dockeru můžeme považovat za koření. Ve světě existuje mnoho druhů koření, a v Dockeru existuje mnoho způsobů, jak pracovat s daty.

→ Část 1: základy
→ Část 2: termíny a koncepty
→ Část 3: Dockerfile
→ Část 4: zmenšení velikosti obrazů a urychlení jejich vytváření
→ Část 5: příkazy
→ Část 6: práce s daty

Studujeme Docker, část 6: práce s daty

Vezměte prosím na vědomí, že tento materiál byl připraven pomocí Docker engine verze 18.09.1 a API verze 1.39.

Data v Dockeru mohou být uložena buď dočasně, nebo trvale. Začněme s dočasnými daty.

Dočasné uchovávání dat

V kontejnerech Docker lze organizovat práci s dočasnými daty dvěma způsoby.

Ve výchozím nastavení se soubory, které aplikace vytváří v kontejneru, ukládají do vrstvy kontejneru, která podporuje zápis. Aby tento mechanismus fungoval, není třeba nic speciálně nastavovat. Dává to možnost levného a efektivního řešení. Aplikaci stačí jednoduše uložit data a pokračovat v běhu. Nicméně jakmile kontejner přestane existovat, zmizí i data uložená tímto jednoduchým způsobem.

Pro uchovávání dočasných souborů v Dockeru je k dispozici další řešení, které je vhodné pro případy, kdy je zapotřebí vyšší úroveň výkonu ve srovnání s tím, co lze dosáhnout použitím standardního mechanismu dočasného uchovávání dat. Pokud nepotřebujete, aby vaše data byla uchovávána déle, než existuje kontejner, můžete k němu připojit tmpfs - dočasné úložiště informací, které využívá paměť hostitele. To umožní urychlit operace zápisu a čtení dat.

Často je třeba uchovávat data i po tom, co kontejner přestane existovat. K tomu nám pomohou mechanismy trvalého uchovávání dat.

Trvalé ukládání dat

Existují dva způsoby, jak prodloužit životnost dat nad rámec životnosti kontejneru. Jedním z těchto způsobů je použití technologie bind mount. Tento přístup umožňuje připojit například skutečný adresář k kontejneru. S daty uloženými v takovém adresáři budou moci pracovat i procesy mimo Docker. Takhle vypadají připojení tmpfs a technologie bind mount.

Studujeme Docker, část 6: práce s daty
Připojení tmpfs a bind mount

Nevýhody použití technologie bind mount spočívají v tom, že její použití komplikuje zálohování dat, migraci dat a sdílení dat mezi několika kontejnery. Pro trvalé uchování dat je mnohem lepší použít svazky Docker.

Svazky Docker

Svazek je souborový systém umístěný na hostitelském stroji mimo kontejnery. Vytvářením a správou svazků se zabývá Docker. Zde jsou hlavní vlastnosti svazků Docker:

  • Jsou to prostředky pro trvalé uchování informací.
  • Jsou samostatné a oddělené od kontejnerů.
  • Mohou je společně používat různé kontejnery.
  • Umožňují efektivní čtení a zápis dat.
  • Svazky lze umístit na zdroje vzdáleného cloudového poskytovatele.
  • Mohou být šifrovány.
  • Lze jim přiřazovat názvy.
  • Kontejner může předem naplnit svazek daty.
  • Jsou vhodné pro testování.

Jak vidíte, svazky Docker mají vynikající vlastnosti. Pojďme si říct, jak je vytvořit.

Vytváření svazků

Svazky lze vytvářet prostřednictvím Dockeru nebo pomocí API požadavků.

Zde je instrukce v Dockerfile, která umožňuje vytvořit svazek při spuštění kontejneru.

VOLUME /my_volume

Použitím takové instrukce Docker po vytvoření kontejneru vytvoří svazek obsahující data, která již existují na uvedeném místě. Všimněte si, že pokud vytváříte svazek pomocí Dockerfile, nezbavuje vás to povinnosti uvést místo připojení svazku.

Svazky lze vytvářet v Dockerfile také pomocí formátu JSON.

Kromě toho lze svazky vytvářet prostřednictvím příkazového řádku během provozu kontejneru.

Práce se svazky z příkazového řádku

▍Vytváření svazku

Samostatný svazek lze vytvořit následujícím příkazem:

docker volume create --name my_volume

▍Zjištění informací o svazcích

Abyste zobrazili seznam svazků Docker, použijte následující příkaz:

docker volume ls

Konkrétní svazek můžete prozkoumat takto:

docker volume inspect my_volume

▍Odstranění svazku

Svazek můžete odstranit takto:

docker volume rm my_volume

Chcete-li odstranit všechny svazky, které nejsou používány kontejnery, můžete použít následující příkaz:

docker volume prune

Před odstraněním svazků vás Docker požádá o potvrzení provedení této operace.

Pokud je svazek spojen s nějakým kontejnerem, takový svazek nelze odstranit, dokud není odpovídající kontejner odstraněn. I když je kontejner odstraněn, Docker to nemusí vždy správně rozpoznat. Pokud se to stane — použijte následující příkaz:

docker system prune

Ten slouží k čištění zdrojů Dockeru. Po vykonání tohoto příkazu byste měli mít možnost odstranit svazky, jejichž stav byl dříve nesprávně určen.

Příznaky —mount a —volume

Při práci se svazky, budete muset při vyvolání příkazu docker, často používat příznaky. Například, abyste vytvořili svazek během vytváření kontejneru, můžete použít tuto konstrukci:

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

Dříve (před rokem 2017) byl populární příznak --volume. Tento příznak (ještě se dá používat ve zkrácené podobě, pak vypadá jako -v) byl původně určen pro samostatné kontejnery, zatímco příznak --mount se používal v prostředí Docker Swarm. Od Dockeru 17.06 lze však příznak --mount používat v jakýchkoli scénářích.

Je třeba poznamenat, že při používání příznaku --mount se zvyšuje objem dodatečných údajů, které je třeba uvést v příkazu, ale z několika důvodů je lepší používat právě tento příznak, a ne --volume. Příznak --mount je jediný mechanismus, který umožňuje pracovat se službami nebo uvádět parametry ovladače svazku. Navíc, práce s tímto příznakem je snazší.

V existujících příkladech příkazů pro práci s daty v Dockeru můžete najít řadu příkladů použití příznaku -v. Když se snažíte přizpůsobit tyto příkazy pro sebe, berte v úvahu, že příznaky --mount a --volume používají různé formáty parametrů. To znamená, že nemůžete jednoduše nahradit -v na --mount a získat funkční příkaz.

Hlavní rozdíl mezi --mount a --volume spočívá v tom, že při použití příznaku --volume se všechny parametry sdružují dohromady, v jednom poli, zatímco při použití --mount parametry jsou odděleny.

Při práci s --mount parametry jsou prezentovány jako páry klíč-hodnota, konkrétně to vypadá jako key=value. Tyto páry oddělují čárky. Zde jsou často používané parametry --mount:

  • type — typ montáže. Hodnotou pro odpovídající klíč mohou být bind, volume nebo tmpfs. Zde hovoříme o svazcích, tedy nás zajímá hodnota volume.
  • source — zdroj montáže. Pro pojmenované svazky je to — jméno svazku. U nepojmenovaných svazků tento klíč neuvedeme. Může být zkrácen na src.
  • cílová destinace — cesta, na kterou se soubor nebo složka přimountuje v kontejneru. Tento klíč může být zkrácen na dst nebo target.
  • readonly — přimountuje svazek, který je určen pouze pro čtení. Použití tohoto klíče není povinné, hodnota mu není přiřazena.

Zde je příklad použití --mount se spoustou parametrů:

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

Závěry

Zde jsou užitečné příkazy, které můžete použít při práci se svazky Dockeru:

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

Zde je seznam často používaných parametrů pro --mount, aplikovatelných v příkazě typu docker run --mount my_options my_image:

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

Nyní, když jsme dokončili tuto sérii materiálů o Dockeru, je čas říci pár slov o tom, kam se mohou ti, kteří se učí Docker, posunout dál. Tady skvělý a rozsáhlý článek o Dockeru. Tady kniha o Dockeru (při koupi této knihy se snažte získat její nejnovější vydání). Tady ještě jedna kniha, která se hodí těm, kteří se domnívají, že praxe je nejlepším způsobem studia technologií.

Vážení čtenáři! Jaké materiály o Dockeru byste doporučili, aby studovali nováčci?

Studujeme Docker, část 6: práce s daty

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster