GNU/Linux >> Znalost Linux >  >> Linux

20 užitečných příkladů příkazů Docker Volume pro moderní vývojáře

Docker od svého vzniku v roce 2013 změnil způsob, jakým balíme naše programy. Umožňuje vývojářům vytvářet špičkový software s minimálními závislostmi a usnadňuje nasazení než kdy dříve. Pokud jste začínající softwarový inženýr, který chce ovládnout platformu dockeru, musíte dobře rozumět různým příkazům svazku dockeru. Svazky jsou mechanismus, který Docker používá k poskytování trvalého úložiště dat. Poskytují významné výhody z hlediska vývoje a nasazení softwaru. Dnes jsme si našli čas, abychom vás naučili základní stavební bloky objemů dat v Dockeru.

Příklady základních příkazů hlasitosti Dockeru

Tato příručka vás naučí aktuální metodiky používané vývojáři k implementaci trvalého ukládání dat v komerčních a open-source projektech. Po dokončení tohoto průvodce budete moci vytvářet vlastní objemy dat a snadno k nim přistupovat z kontejnerů dokovacích stanic. Pokud jste úplný začátečník, doporučujeme, abyste si před prací se svazky prostudovali našeho průvodce základními příkazy dockeru.

1. Vytváření svazků Docker

V Dockeru je velmi snadné vytvářet objemy dat. K tomu budete muset použít příkaz volume create démona dockeru. Podívejte se rychle na níže uvedený příklad, abyste viděli, jak to funguje.

$ docker volume vytvořit testVolume

Tento příkaz vytvoří název svazku dat testVolume které mohou být použity konkrétním kontejnerem nebo sdíleny mezi clusterem kontejnerů. Nyní můžete tento svazek připojit k umístění uvnitř kontejneru. Po dokončení bude velmi snadné ukládat data kontejneru nebo k nim přistupovat z hostitelského počítače.

2. Zobrazení dostupných svazků

Je běžné, že vývojová prostředí mají velké množství datových objemů. Je tedy důležité identifikovat konkrétní objemy, se kterými pracujete. Naštěstí je velmi snadné vypsat všechny aktuálně deklarované objemy dat pomocí dílčího příkazu volume ls démona docker.

$ docker volume ls
--

Spuštěním výše uvedeného příkazu získáte seznam všech svazků dockeru přítomných ve vašem hostiteli. Vytiskne názvy datových svazků a také příslušné ovladače svazků. Datové svazky jsou uloženy ve specifické části hostitelského souborového systému, konkrétně /var/lib/docker/volumes/ v Linuxu.

3. Kontrola svazků Dockeru

Příkaz volume inspects démona docker nám poskytuje základní informace o konkrétním svazku. Zobrazuje informace, jako je ovladač svazku, bod připojení, rozsah a štítky. Níže uvedený příkaz to demonstruje na praktickém příkladu.

$ docker volume inspect testVolume

Výsledná data ukazují, že naše testVolume je připojen v umístění /var/lib/docker/volumes/testVolume/_data našeho hostitelského stroje. Zobrazuje také datum vytvoření těchto informací a také jakékoli zadané možnosti. Vývojářům to výrazně usnadňuje odstraňování problémů s objemy dat.

4. Odstranění konkrétních svazků

Pokud jste nashromáždili nevyužité objemy dat, je dobré je odstranit. Tímto způsobem můžete uvolnit úložný prostor v hostitelském prostředí. Následující příklad ukazuje, jak můžete odstranit jeden svazek pomocí jeho atributu name.

$ objem dockeru rm testVolume

Můžete tedy odstranit konkrétní datový svazek pomocí dílčího příkazu volume rm následovaného názvem svazku. Jako potvrzení vrátí název smazaného svazku ve vašem emulátoru terminálu Linux.

5. Odstranění více svazků

Smazání více objemů dat je také docela jednoduché. Jednoduše zadejte názvy svazků, které chcete odstranit, jeden po druhém. Níže uvedený příkaz to ukazuje v akci.

$ objem dockeru rm testVolume novýVolume otherVolume

Tento příkaz odstraní tři zadané datové svazky. Všimněte si, že jsme nevytvořili newVolume a otherVolume . Byly zde použity pouze pro demonstrační účely. Před odstraněním se tedy nejprve ujistěte, že vaše datové objemy existují.

6. Odstranění všech svazků

Jakmile se kontejnery přesunou z vašeho vývojového stroje do produkčního prostředí, vždy je dobré se zbavit objemů dat. Naštěstí démon docker umožňuje vývojářům odstranit všechny dostupné svazky dockeru pomocí jediného příkazu, jak je znázorněno níže.

Prořezání objemu $ docker

Navíc je tento příkaz docker volume elegantní, což znamená, že neodstraní žádné svazky, které používá existující kontejner. Používání je tedy velmi bezpečné a pomáhá uvolnit tolik potřebné místo ve vývojových prostředích.

7. Vytváření kontejnerů s objemy dat

Ukázali jsme zatím jen některé základní objemové operace. Ve většině reálných scénářů však budete muset své datové svazky připojit k dokovacímu kontejneru. Následující příkaz docker ukazuje, jak vytvořit kontejner dockeru a připojit datový svazek k tomuto kontejneru.

$ docker run -d -it --name test-container -v "testVolume":/tmp ubuntu:xenial
$ docker run -d -it --name test-container --volume "testVolume":/tmp ubuntu:xenial

Tento příkaz vytvoří kontejner s názvem test-container pomocí obrazu ubuntu:xenial a připojí náš datový objem k /tmp umístění tohoto kontejneru. Více informací můžete najít spuštěním níže uvedeného příkazu a zaškrtnutím sekce „Mount“ ve výstupu.

$ docker inspect test-container

8. Připojování datových svazků do kontejnerů

The –mount možnost v Dockeru lze použít pro adresování existujícího datového objemu do určité části kontejnerového souborového systému. Přestože výsledek bude zcela podobný výše uvedenému příkazu, je pro mnoho vývojářů Linuxu intuitivnější.

$ docker run -d -it --name test-container --mount source=testVolume,target=/tmp ubuntu:xenial

–mount možnost sada n-tic oddělených čárkou. Jedná se o = páry, které označují atributy objemu dat.

9. Vytváření Bind Mounts v Dockeru

Bind mounts jsou mechanismem persistence, který je k dispozici od počátků Dockeru. Poskytují poněkud omezenou funkčnost ve srovnání se svazky dockerů, ale v některých specifických případech jsou vhodnější. Na rozdíl od svazků závisí připojení připojení na základním hostitelském souborovém systému.

$ docker spustit -d -it --name test-container --mount type=bind,source=$(pwd),target=/tmp ubuntu:xenial

Výše uvedený příkaz vytvoří připojení připojení, které mapuje aktuální pracovní adresář vašeho souborového systému Linux na /tmp umístění kontejneru. type=bind n-tice označuje, že se jedná o připojení k připojení, nikoli svazek.

10. Předvyplnění objemů dat

Někdy mohou vývojáři při vytváření kontejnerů dokovacích stanic vyžadovat předvyplnění objemů dat. Tato technika však platí pouze v případě, že cílový cíl kontejneru obsahuje data před vytvořením svazku.

$ docker spustit -d --name=nginxContainer -v nginxVol:/usr/share/nginx/html nginx:latest

Tento příkaz nejprve vytvoří svazek nginxVol a naplní jej obsahem /usr/share/nginx/html umístění souborového systému kontejnerů. Nyní budou tato data přístupná všem ostatním kontejnerům, které sdílejí svazek nginxVol. Alternativně můžete použít syntaxi připojení, jak je uvedeno níže.

$ docker spustit -d --name=nginxContainer --mount source=nginxVol,destination=/usr/share/nginx/html nginx:latest

11. Použití svazků pouze pro čtení

Ve výchozím nastavení mají všechny kontejnery přístup ke čtení i zápisu k příslušným datovým svazkům. Ne všechny kontejnery však potřebují zapisovat data do svazku. Často stačí pouhé čtení dat. V takových případech můžete svému kontejneru přidělit přístup pouze pro čtení. Podívejte se, jak to funguje, v příkazech docker volume.

$ docker spustit -d --name=nginxContainer -v nginxVol:/usr/share/nginx/html:ro nginx:latest

Takže jednoduše přidáním „:ro ‘ pole za cílem zakáže nginxContainer zapisovat data do nginxVol. Budete muset použít „pouze pro čtení Pokud vytváříte svazky pomocí volby –mount. Pozorně si poznamenejte rozdíl v syntaxi.

$ docker spustit -d --name=nginxContainer --mount source=nginxVol,destination=/usr/share/nginx/html, nginx:latest pouze pro čtení

12. Vytváření svazků pomocí ovladačů

Ovladače svazku jsou flexibilní mechanismus používaný Dockerem k poskytování přístupu ke vzdáleným připojením, šifrování dat a dalším funkcím. Níže uvedené příkazy uživatelům ukazují, jak vytvořit ukotvitelný kontejner pomocí konkrétního ovladače svazku.

$ vytvoření svazku docker --driver vieux/sshfs -o [email protected]:/home/session -o password=testPassword  sshVolume

Tento příkaz vytvoří datový svazek dockeru pomocí ovladače vieux/sshfs. Tento ovladač umožňuje vývojářům připojit vzdálené adresáře pomocí technologie SSHFS.

13. Spuštěné kontejnery, které vytvářejí svazky pomocí ovladačů

Následující příkaz můžete použít k vytvoření a spuštění kontejnerů, které používají ovladače svazku k vytvoření svazku dat. Tento příklad staví na výše uvedeném.

$ docker run -d --name sshfsContainer --volume-driver vieux/sshfs --mount src=sshVolume,target=/tmp,[email protected]:/home/session,volume-opt=password=testPassword nginx:nejnovější

Volba hlasitosti projde možnostmi. Není to nutné pro každý případ použití. Pokud však zadáváte volume-opt, musíte použít –mount příznak namísto -v nebo –objem.

14. Vytváření služeb, které používají svazek NFS

NFS neboli Network File System je distribuovaný systém pro sdílení souborů, který nám umožňuje používat vzdálené souborové systémy, jako by byly součástí lokálního souborového systému. Následující příkaz ukazuje, jak vytvořit službu, která používá svazek NFS.

$ docker service create -d --name nfs-service --mount 'type=volume,source=nfsVolume,target=/tmp,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/var/docker-nfs,volume-opt=o=addr=10.0.0.10' nginx:latest

Tento příkaz předpokládá, že náš server NGS běží na 10.0.0.10, a zpřístupňuje /var/docker-nfs adresář. Používá také NFSv3. Před použitím s NFSv4 tedy budete muset provést nějaké úpravy.

15. Zálohování kontejnerů

Svazky poskytují vývojářům flexibilní způsob zálohování důležitých dat kontejnerů. Pro účely ilustrace nejprve vytvoříme nový kontejner s názvem test-container.

$ docker run -v /data --name test-container ubuntu:xenial /bin/bash

Test-container má tedy svazek nazvaný /data. Nyní spustíme další kontejner a připojíme /data objem z testovací nádoby. Poté připojíme místní adresář našeho souborového systému jako /backup a poté uložte obsah /data do /backup adresář jako backup.tar.

$ docker spustit --rm --volumes-from test-container -v $(pwd):/backup ubuntu:xenial tar cvf /backup/backup.tar /data

–svazky-od volba označuje, že ve skutečnosti připojujeme objem dat testovacího kontejneru do našeho nového kontejneru.

16. Obnovení záloh kontejnerů

Je také velmi snadné obnovit vaše kontejnery ze záložních souborů. Data můžete obnovit do stejného kontejneru nebo do konkrétního kontejneru. Zde vám ukážeme, jak obnovit obsah souboru backup.tar vytvořeného v předchozím příkladu do jiného kontejneru.

$ docker spustit -v /data --name test-container2 ubuntu /bin/bash

Tento příkaz vytvoří další nový kontejner s /data hlasitost. Nyní rozbalíme obsah souboru backup.tar do tohoto nového datového svazku.

$ docker spustit --rm --volumes-from test-container2 -v $(pwd):/backup ubuntu bash -c "cd /data &&tar xvf /backup/backup.tar --strip 1" 

Své zálohování a obnovení můžete snadno automatizovat pomocí těchto jednoduchých, ale flexibilních příkazů pro svazek dockeru.

17. Odebrání anonymních svazků

Dříve jsme viděli, jak odstranit normální pojmenovaný svazek. Docker však má také jiný typ objemu dat, který se nazývá anonymní svazky. Podívejte se rychle na níže uvedený příkaz a zjistěte, jak se liší operace odstranění mezi pojmenovanými a anonymními svazky.

$ docker spustit --rm -v /anon -v whats-in-a-name:/tmp busybox top

Výše uvedený příkaz vytvoří anonymní svazek s názvem /anon a pojmenovaný svazek s názvem co v názvu . Nyní Docker při ukončení automaticky odstraní tento kontejner. Smaže však pouze /anon svazek, nikoli svazek whats-in-a-name. Musíte to odstranit pomocí příkazu docker volume rm.

18. Určení Mount Propagation

Šíření montáže označuje tok řízení mezi původní montáží a jejími replikami. Ve výchozím nastavení připojení vazby i svazky používají rprivate nastavení. Tím se zabrání jakémukoli šíření mezi původním držákem a jeho replikami. Toto nastavení můžete přepsat pomocí n-tice propagace vazby v připojení připojení.

$ docker spustit -d -it --name test-container --mount type=bind,source="$(pwd)"/test,target=/tmp --mount type=bind,source="$( pwd)"/test,target=/temp,readonly,bind-propagation=shared nginx:latest

Tento příkaz připojí /test adresáře dvakrát do kontejneru. Navíc všechny nové přírůstky do /tmp připojení se projeví v/temp namontovat. Při použití svazků však nemůžete přepsat nastavení šíření. Funguje pouze při použití připojení připojení na hostiteli Linux.

19. Zobrazení Příručky ovládání hlasitosti

Pomocí níže uvedeného příkazu můžete snadno zobrazit základní použití příkazů hlasitosti.

$ man docker volume

Neposkytuje však hloubkové vysvětlení. Proto vám doporučujeme prostudovat si oficiální dokumentaci dockeru týkající se svazků a připojení.

20. Zobrazení stránky nápovědy pro dílčí příkazy

Pomocí následujícího příkazu zobrazíte primární možnosti dostupné pro svazek dockeru.

$ svazek docker --help

Další informace o konkrétní možnosti můžete zobrazit také pomocí následující syntaxe.

Příkaz $ docker volume --help$ docker volume ls --help

Konec myšlenek

Svazky Docker poskytují velmi potřebné zařízení pro moderní aplikace. Umožňují vývojářům vytvářet robustní, špičkové aplikace a služby odstraněním problémů s úložištěm. Příkazy docker volume navíc také usnadňují vytváření a údržbu záloh dat vašeho kontejneru. Připravili jsme tohoto pečlivě promyšleného průvodce, který vám pomůže snadněji spravovat objemy dat. Důrazně doporučujeme, abyste nejprve začali se základními příkazy a poté postupně přešli ke složitým scénářům ze skutečného života. Doufáme, že jsme vám v této příručce poskytli informace, které jste hledali. Pokud máte nějaké dotazy, nezapomeňte nám zanechat komentář.


Linux
  1. 12 Užitečné příklady příkazů Wget v Linuxu

  2. 16 užitečných příkladů příkazů „cp“ pro začátečníky v systému Linux

  3. 10 praktických příkladů příkazů Grep pro vývojáře

  1. Pochopení svazků Docker

  2. Příkaz ls v Linuxu:17 vysvětlení užitečných příkladů

  3. Užitečné příklady příkazu Docker ps

  1. Příklady příkazů DNF pro začátečníky

  2. Příklady příkazů lvremove v Linuxu

  3. Příklady příkazů lvdisplay v Linuxu