Learning Docker, Část 6: Práce s daty

V dnešním díle překladu série materiálů o Dockeru si povíme něco o práci s daty. Zejména o svazcích Docker. V těchto materiálech jsme neustále porovnávali programovací mechanismy Dockeru s různými jedlými obdobami. Z této tradice zde neuhneme. Nechť jsou data v Dockeru kořením. Na světě existuje mnoho koření a Docker má mnoho způsobů, jak s daty pracovat.

Část 1: Základy
Část 2: Termíny a koncepty
Část 3: Dockerfiles
Část 4: Zmenšení velikosti obrázků a urychlení jejich sestavení
Část 5: příkazy
Část 6: práce s daty

Learning Docker, Část 6: Práce s daty

Upozorňujeme, že tento materiál byl připraven pomocí enginu Docker verze 18.09.1 ​​a verze API 1.39.

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

Dočasné úložiště dat

Existují dva způsoby, jak spravovat dočasná data v kontejnerech Docker.

Ve výchozím nastavení jsou soubory vytvořené aplikací spuštěnou v kontejneru uloženy v zapisovatelné vrstvě kontejneru. Aby tento mechanismus fungoval, není třeba nic zvláštního konfigurovat. Ukazuje se to levné a veselé. Aplikace prostě potřebuje uložit data a pokračovat v práci po svém. Po zániku kontejneru však zmizí i takto jednoduše uložená data.

Dočasné ukládání souborů v Dockeru je dalším řešením, které je vhodné pro případy, kdy potřebujete vyšší výkon, než jaký je dosažitelný pomocí standardního mechanismu dočasného ukládání dat. Pokud nepotřebujete, aby byla vaše data uložena déle, než existuje kontejner, můžete se připojit ke kontejneru tmpfs – dočasnému úložišti informací, které využívá hostitelskou RAM. To urychlí provádění operací zápisu a čtení dat.

Často se stává, že data je potřeba uchovávat i poté, co kontejner přestane existovat. K tomu potřebujeme trvalé mechanismy ukládání dat.

Trvalé ukládání dat

Existují dva způsoby, jak prodloužit životnost dat než životnost kontejneru. Jedním ze způsobů je použití technologie bind mount. S tímto přístupem můžete ke kontejneru připojit například reálnou složku. S daty uloženými v takové složce budou moci pracovat i procesy mimo Docker. Takhle Koukni se Technologie připojení tmpfs mount a bind.

Learning Docker, Část 6: Práce s daty
Montáž tmpfs a bind mount

Nevýhody použití technologie bind mount jsou v tom, že její použití komplikuje zálohování dat, migraci dat, sdílení dat mezi více kontejnery. Pro trvalé ukládání dat je mnohem lepší používat svazky Docker.

Volumes Docker

Svazek je systém souborů, který je umístěn na hostitelském počítači mimo kontejnery. Svazky vytváří a spravuje Docker. Zde jsou hlavní vlastnosti svazků Docker:

  • Jsou prostředkem trvalého ukládání informací.
  • Jsou nezávislé a oddělené od kontejnerů.
  • Mohou být sdíleny mezi různými kontejnery.
  • Umožňují vám organizovat efektivní čtení a zápis dat.
  • Svazky lze umístit na zdroje vzdáleného poskytovatele cloudu.
  • Mohou být zašifrovány.
  • Mohou mít jména.
  • Kontejner může zajistit předvyplnění svazku daty.
  • Jsou vhodné pro testování.

Jak můžete vidět, svazky Docker mají úžasné vlastnosti. Pojďme si říci, jak je vytvořit.

Vytváření svazků

Svazky lze vytvářet pomocí požadavků Docker nebo API.

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

VOLUME /my_volume

Při použití podobné instrukce Docker po vytvoření kontejneru vytvoří svazek obsahující data, která již v zadaném umístění existují. Všimněte si, že pokud vytvoříte svazek pomocí Dockerfile, nezbaví vás to nutnosti zadat bod připojení svazku.

Můžete také vytvořit svazky v Dockerfile pomocí formátu JSON.

Kromě toho lze svazky vytvářet pomocí nástrojů příkazového řádku, když je kontejner spuštěn.

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

▍Vytváření svazku

Samostatný svazek můžete vytvořit pomocí následujícího příkazu:

docker volume create —-name my_volume

▍Zjistěte informace o svazcích

Chcete-li zobrazit 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 smazat takto:

docker volume rm my_volume

Chcete-li odstranit všechny svazky, které kontejnery nepoužívají, můžete se uchýlit k následujícímu příkazu:

docker volume prune

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

Pokud je svazek přidružen ke kontejneru, nelze tento svazek odstranit, dokud nebude odstraněn odpovídající kontejner. Zároveň, i když je kontejner odstraněn, Docker tomu vždy nerozumí. Pokud k tomu dojde, můžete použít následující příkaz:

docker system prune

Je navržen tak, aby vyčistil prostředky Dockeru. Po provedení tohoto příkazu byste měli být schopni odstranit svazky, jejichž stav byl dříve nesprávný.

Parametry --mount a --volume

Chcete-li pracovat se svazky, když zavoláte příkaz docker, budete často muset používat příznaky. Chcete-li například vytvořit 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

V dávných dobách (do roku 2017) byla vlajka populární --volume. Zpočátku tato vlajka (lze ji použít i ve zkrácené podobě, pak to vypadá -v) byl použit pro samostatné kontejnery a vlajku --mount - v prostředí Docker Swarm. Od Dockeru 17.06 však příznak --mount lze použít v jakémkoli scénáři.

Je třeba poznamenat, že při použití příznaku --mount množství dalších dat, která je třeba zadat v příkazu, se zvyšuje, ale z několika důvodů je lepší použít tento konkrétní příznak a ne --volume. Vlajka --mount je jediný mechanismus, který vám umožňuje pracovat se službami nebo specifikovat možnosti ovladače svazku. S tímto příznakem se také lépe pracuje.

Ve stávajících příkladech příkazů pro manipulaci s daty Dockeru můžete vidět mnoho příkladů použití příznaku -v. Při pokusu o přizpůsobení těchto příkazů pro sebe mějte na paměti, že příznaky --mount и --volume používat různé formáty parametrů. To znamená, že nemůžete jednoduše vyměnit -v na --mount a získat pracovní tým.

Hlavní rozdíl mezi --mount и --volume je to při použití vlajky --volume všechny parametry se shromažďují společně v jednom poli a při použití --mount parametry jsou odděleny.

Při práci s --mount parametry jsou reprezentovány jako páry klíč-hodnota, konkrétně to vypadá key=value. Tyto dvojice jsou odděleny čárkami. Zde jsou běžně používané možnosti --mount:

  • type - typ montáže. Hodnota pro odpovídající klíč může být vážou, objem nebo tmpfs. Bavíme se zde o objemech, to znamená, že nás zajímá hodnota volume.
  • source - montáž zdroje. U pojmenovaných svazků se jedná o název svazku. U nepojmenovaných svazků tento klíč není uveden. Dá se zkrátit na src.
  • destination - cesta, ke které je soubor nebo složka připojena v kontejneru. Tento klíč lze zkrátit na dst nebo target.
  • readonly - připojí zamýšlený svazek pouze na čtení. Použití tohoto klíče je volitelné a není mu přiřazena žádná hodnota.

Zde je příklad použití --mount s mnoha možnostmi:

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

Výsledky

Zde je několik užitečných příkazů, které můžete použít při práci se svazky Docker:

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

Zde je seznam běžně používaných možností pro --mount, použitelný v příkazu formuláře 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 Dockeru, je čas říci pár slov o tom, kam se mohou studenti Dockeru dále ubírat. zde je skvělý článek o Dockeru. zde je knihu o Dockerovi (při nákupu této knihy se snažte získat její nejnovější vydání). zde je další kniha pro ty, kteří si myslí, že praxe je nejlepší způsob, jak se naučit technologii.

Vážení čtenáři! Jaké materiály Docker byste doporučili začátečníkům, aby se naučili?

Learning Docker, Část 6: Práce s daty

Zdroj: www.habr.com

Přidat komentář