V případě Docker , data budou uložena uvnitř kontejneru. A když odstraníme kontejner, data budou ztracena. V této příručce se naučíme, jak vytvořit svazky dockeru, jak je připojit ke kontejnerům a jak lze stejný svazek sdílet mezi dvěma nebo více kontejnery pro ukládání dat.
Pokud ještě neznáte základy dockeru, přečtěte si následující příručku:
- Začínáme s Dockerem
Proč požadujeme svazky pro Docker?
- Při smazání kontejnerů se svazky nesmažou.
- Připojte nebo odeberte svazek ke kontejnerům.
- Sdílejte svazky (úložiště/data) mezi různými kontejnery.
- Odpojení kontejnerů od úložiště.
- Ukládání svazku na vzdáleném hostiteli nebo cloudu.
Můžeme mít logické rozdělení dat i kontejneru. Data můžeme uchovat takovým způsobem, že pokud je odstraníme
kontejneru pak budou přítomna i naše data. Takže po zničení kontejneru můžeme objem připojit k jakémukoli existujícímu kontejneru, stejně jako k novému kontejneru.
Začínáme s Docker Volumes
Hlasitost ukotvitelného panelu zobrazí podrobnosti o příkazech svazku, pomocí kterých můžeme vytvořit svazek, prohlédnout si podrobná data svazku, vypsat dostupné svazky a svazky odebrat.
# docker volume
Zobrazit sekci nápovědy příkazu "docker volume"
Vytváření svazků Docker
Syntaxe pro vytvoření svazku dockeru je:
docker volume create <volume_name>
Příklad:
# docker volume create devops_volume
Výše uvedený příkaz vytvoří ukotvitelný svazek s názvem devops_volume .
vytvořit svazek docker
Výpis svazků ukotvitelného panelu
Chcete-li zobrazit seznam všech vytvořených svazků ukotvitelného panelu, spusťte:
# docker volume ls
vypsat svazky ukotvitelného panelu
Kontrola svazků dockeru
Inspekce svazku ukotvitelné stanice vám poskytne podrobnosti o vytvoření svazku, umístění, názvu a rozsahu.
Syntaxe:
docker volume inspect <volume_name>
Dovolte mi, abych vám ukázal podrobnosti o svazku dockeru s názvem devops_volume .
# docker volume inspect devops_volume
zkontrolovat svazky dockeru
Vytváření kontejnerů s připojeným svazkem
Syntaxe:
docker container create --name <container_name> -it --mount source<volume_name>,target=/<folder_Name> <image_name>
Příklad:
# docker container create --name myBusyBox1 -it --mount source=devops_volume,target=/app busybox
vytvořte kontejner s připojeným svazkem
Chcete-li ověřit, zda byl kontejner vytvořen nebo ne, použijte docker ps -a příkaz:
výstup příkazu "docker ps"
Spouštění kontejnerů
Chcete-li spustit nově vytvořený kontejner, například myBusyBox1 , spustit:
# docker container start myBusyBox1
spustit ukotvitelné kontejnery
Jak vidíte na výše uvedeném snímku obrazovky, kontejner myBusyBox1 byl vytvořen před 8 minutami a spuštěn před 6 sekundami.
Kopírování souborů mezi kontejnery ze sdíleného svazku
Vytvořme scénář, ve kterém vytvoříme soubor v jednom kontejneru ve sdíleném umístění a pokusíme se získat přístup k souboru z jiného kontejneru.
Již jsme vytvořili kontejner s názvem myBusyBox1. Vytvořme další, například myBusyBox2 .
vytvořit kontejner
Nyní máme dva kontejnery v běžícím stavu, myBusyBox1 a myBusyBox2.
Pojďme se připojit k prvnímu kontejneru a vytvořit soubor v /app složka.
# docker exec -it myBusyBox1 sh
Výše uvedený příkaz vás zavede do kontejneru.
Poté vytvořte novou složku s názvem devops uvnitř složky /app a ukončete první kontejner.
připojit k prvnímu kontejneru
Nyní zkopírujte soubor, například index.html , z místního systému do umístění /app/devops/ kontejneru myBusyBox1.
# docker container cp index.html myBusyBox1:/app/Devops
Nyní se připojte k jinému druhému kontejneru, tj. myBusyBox2 a ověřte, že v /app/devops složka index.html soubor je přítomen nebo není.
# docker exec -it myBusyBox2 sh
připojit k druhému kontejneru
Z výše uvedeného snímku obrazovky je potvrzeno, že oba kontejnery sdílejí stejný svazek.
Umístění přípojného bodu svazku můžeme zkontrolovat pomocí docker volume inspect příkaz jako níže:
# docker volume inspect devops_volume
příkaz docker inspect volume
Jak vidíte, umístění přípojného bodu je /var/lib/docker/volumes/devops_volume/_data .
Pojďme do umístění přípojného bodu a podívejme se, zda je zkopírovaný soubor dostupný nebo ne.
bod připojení svazků docker
V umístění Mountpoint jsme našli stejný soubor.
Smazat svazky ukotvitelného panelu
Syntaxe pro odstranění svazku je:
docker volume rm <volume_name>
Smažeme svazek s názvem devops_volume .
# docker volume rm devops_volume
odstranit svazek ukotvitelného panelu
Na výše uvedeném snímku obrazovky se pokoušíme smazat svazek, ale nelze jej smazat, protože svazek se již používá. Takže nejprve musíme zabít kontejner a uvolnit objem. A pak můžeme svazek smazat.
Chcete-li to provést, nejprve odstraňte všechny spuštěné kontejnery pomocí příkazu:
# docker rm –f $(docker ps -aq)
A pak odeberte svazek:
# docker volume rm devops_volume
odstranit svazky dockeru
Smazat všechny svazky najednou
Pomocí docker rm příkaz, můžeme odebrat jeden svazek najednou. Pokud máme více svazků a chceme smazat všechny svazky, musíme použít prune příkaz.
Pojďme vytvořit několik svazků:
vytvořit svazky dockeru
Nyní odstraňte všechny svazky dockeru najednou pomocí příkazu:
# docker volume prune
odstranit všechny svazky dockeru najednou
Vidět? Smazali jsme všechny svazky najednou.
Doporučené čtení:
- Vysvětlení pojmů Docker Networking
- Jak automaticky aktualizovat spuštěné kontejnery Docker
- ctop – nástroj pro monitorování příkazového řádku pro linuxové kontejnery
- Portainer – nejsnazší způsob správy Dockeru
- PiCluster – jednoduchá webová aplikace pro správu dockerů
- Dockly – Správa kontejnerů Docker z terminálu
O autorovi:
Dhruv Tiwari je DevOps Engineer, který miluje automatizaci věcí, práci s Linuxem ve velkém a sní o dni, kdy jsou systémy dostatečně chytré, aby se nikdy nemusely přihlašovat k linuxovému boxu. Cesta CI/CD od zdrojového kódu přes nasazení kódu až po produkci.