Úvod
Datové svazky Dockeru je důležitým konceptem při kontejnerizaci vašich aplikací. Znalost tohoto konceptu je zásadní pro zajištění nejlepšího fungování vaší kontejnerizované aplikace spolu se spolehlivým uchováváním a správou dat. Přestože je tento koncept důležitý, pro mnoho vývojářů je také matoucí a složitý. Pro vývojáře a specialisty DevOps je důležité, aby rozuměli tomu, jak nastavit datové svazky Dockeru, chápali jejich správné použití, znali různé typy svazků a věděli, který typ vybrat pro svou aplikaci.
Tento návod je zaměřen na vysvětlení konceptu a použití datových svazků Dockeru. Po dokončení tohoto návodu budete mistrně ovládat nastavení a práci s jakýmkoli typem datového svazku Dockeru.
Požadavky
Chcete-li postupovat podle tohoto návodu, budete potřebovat následující položky:
- Ubuntu nainstalované. Podívejte se na náš Jak nastavit server Ubuntu 18.04 návod pro rychlou orientaci.
- Uživatel Ubuntu s oprávněními sudo. Tento krok může být komplikovaný, zejména pokud nejste obeznámeni s Linuxem. Přečtěte si Konfigurace souboru Linux Sudoers pro podrobný návod.
- Docker nainstalovaný na Ubuntu. Chcete-li nainstalovat Docker na své Ubuntu, můžete postupovat podle našeho Jak nainstalovat & provozovat Docker na Ubuntu ve veřejném cloudu blogu.
Ačkoli se tento návod zaměřuje na správu Dockeru na Ubuntu, docker příkazy jsou použitelné ve všech operačních systémech s nainstalovaným Dockerem.
Jak fungují kontejnery Docker
Abyste plně porozuměli datovým svazkům Dockeru, musíte vědět, jak fungují kontejnery Docker. V této části poskytujeme přehled základů pro nové uživatele Dockeru. Pokud víte, jak Docker funguje, nebo jste zkušeným uživatelem Dockeru, můžete tuto část přeskočit a začít přímo s datovými svazky.
Kontejnery Docker umožňují spouštění aplikace nad hostitelským operačním systémem instalací platformy Docker. Protože je platforma Docker nainstalována na hostitelském operačním systému, vzniká abstrakce mezi hostitelským strojem a hostovanou aplikací. Na rozdíl od virtuálního stroje sdílí kontejner Docker své linuxové jádro s hostitelským operačním systémem. Vzhledem k tomu, že Docker nevyžaduje instalaci žádného dalšího operačního systému nad hostitelským strojem, jsou aplikace Docker lehké a přístupné na všech hostitelských strojích, pokud je na daném hostitelském stroji Docker nainstalován.
Vzhledem k tomu, že neexistuje žádný další hostovaný operační systém, sdílí platforma Docker prostředky s hostitelským strojem. Spuštění aplikace Docker je rychlé, ale složitost nastává, když musíte prostředky sdílet. Docker nemá vlastní paměť ani úložiště pro trvalé uchovávání dat. Tyto prostředky musí pocházet z hostitelského stroje. Lidé zvyklí používat virtuální stroje považují tento proces sdílení a správy prostředků za obtížný. Nedostatek patřičných znalostí může vést k neočekávaným a nežádoucím výsledkům. Přestože tento návod předpokládá, že jste obeznámeni s ekosystémem Dockeru, neváhejte si projít náš podrobný návod Co je Docker? Přehled ekosystému Docker pro rychlé zopakování.
Trvalé uchovávání dat pomocí datových svazků Dockeru
Při práci s Dockerem nemůžete vytvořit svazek přímo uvnitř něj. Chceme-li tedy ukládat data, musíme vytvořit kontejner pro svazek Dockeru s připojeným svazkem. Pro připojení naší aplikace Docker k tomuto kontejneru s datovým svazkem používáme příkaz Dockeru --volume-from k získání kontejneru a jeho připojení k naší aplikaci.
Tento proces si projdeme krok za krokem:
- Nejprve vytvořte nový kontejner s názvem
my-container spuštěním níže uvedeného příkazu:
1docker create -v /tmp --name my-container ubuntu
Tím se vytvoří nový kontejner ve složce /tmp . Adresář složky můžete podle potřeby změnit. - Nyní, když je váš datový kontejner připraven, můžete do něj zapisovat spuštěním nového kontejneru Ubuntu s příznakem
--volume-from a následným spuštěním
bash. Cokoli zapíšeme do
tmp adresář bude uložen na našem hostitelském stroji v
/tmp složce:
1docker run -t -i --volumes-from my-container ubuntu /bin/bash
Volba -t příkazové řádky volá terminál zevnitř kontejneru. Příznak -i zajišťuje interaktivní připojení. V příkazovém řádku bash pro kontejner Ubuntu vytvořte soubor v /tmp:
1echo "Some sample data" > /tmp/sample_file - Nakonec ukončete tento bash spuštěním příkazu
exit . Poté spusťte následující příkaz:
1docker run -t -i --volumes-from my-container ubuntu /bin/bash
Svůj sample_file najdete v tomto adresáři. Počet definovaných svazků není nijak omezen. Pomocí příznaku --volumes-from můžete přidat tolik svazků, kolik chcete. Můžete také vytvořit libovolný počet kontejnerů pro datové svazky.
Přístup k datům mezi hostitelem a kontejnerem Docker
Pro čtenáře se zkušenostmi s virtualizací je tato možnost podobná možnosti sdílené složky ve virtuálních počítačích. Zde namísto vytvoření kontejneru data-only spustíme naši aplikaci Docker pomocí obrazu Docker a přepíšeme jeden z jeho adresářů obsahem adresáře na hostitelském systému.
Běžným scénářem by bylo ukládání souborů protokolů na hostitelském stroji. To může být potřeba, abychom mohli tyto soubory analyzovat podle potřeby, aniž bychom museli vstupovat do stroje. Pro tento scénář předpokládejme, že používáte obraz Docker Nginx a chcete ukládat jeho soubory protokolů na hostitelském stroji. Obraz Nginx Docker zapisuje protokoly do adresáře /var/log/nginx , ale to je /var/log/nginx uvnitř kontejneru Docker Nginx. Toto umístění tedy není pro hostitelský stroj přístupné.
K dosažení našeho cíle bychom museli vytvořit sdílenou složku pro ukládání protokolů mezi hostitelským strojem a obrazem Docker Nginx. Níže tento proces ilustrujeme v jednoduchém průvodci krok za krokem:
- Nejprve vytvořte na svém hostitelském stroji adresář, kam chcete ukládat protokoly:
Poté spusťte kontejner spuštěním níže uvedeného příkazu:1mkdir ~/my-nginxlogs
1docker run -d -v ~/my-nginxlogs:/var/log/nginx -p 5000:80 -i nginx
- Tento příkaz
run přijímá několik argumentů, pojďme si ho tedy rozebrat, abychom mu lépe porozuměli:
- -p 5000:80: Nastaví přesměrování portů. Kontejner Nginx standardně naslouchá na portu 80 , což mapuje port kontejneru Nginx 80 na port 5000 na hostitelském systému.
- -d: Odpojí proces a spustí jej na pozadí.
- -v ~/my-nginxlogs:/var/log/nginx: Propojíme adresář /var/log/nginx z vnitřku kontejneru Nginx s adresářem /my-nginxlogs na hostitelském stroji. Tento znak : odděluje cestu hostitele od cesty kontejneru. Cesta hostitele je vždy na prvním místě.
Nyní, když náš kontejner Nginx běží, nejprve zkontrolujte, zda server Nginx běží na portu našeho hostitelského stroje 5000 otevřením webového prohlížeče a zadáním URL: http://localhost:5000. Jakmile se zobrazí uvítací stránka, váš server Nginx je připraven a vytváří protokoly ve své složce /var/log/nginx .
Pokud otevřete složku /my-nginxlogs na svém hostitelském stroji, uvidíte zde soubory protokolů z kontejneru Docker Nginx. Pokud provedete změny ve složce /my-nginxlogs na hostitelském stroji, zatímco kontejner Nginx běží, změny se projeví také ve složce kontejneru /var/log/nginx .
Závěr
V tomto návodu jsme komplexně přistoupili k pochopení datových svazků Dockeru (Docker Data Volumes). Podívali jsme se na vytváření svazků pro vaši aplikaci, sdílení dat mezi hostitelem a kontejnerem Docker, typy dat a perzistenci dat. To vám pomůže při ukládání dat ve vašich kontejnerizovaných aplikacích a také při správě stavu a konfigurace aplikace.
Pro další studium o Dockeru se podívejte na následující návody z našeho blogu:
- Jak hostovat repozitář obrazů Docker a sestavovat obrazy Docker pomocí GitLab Self-Managed instance na Ubuntu 20.04
- Sestavení a nasazení aplikace Flask pomocí Dockeru na Ubuntu 20.04
- Nastavení soukromého Docker registru na Ubuntu 18.04
- Jak sdílet data mezi Docker kontejnerem a hostitelem
- Vyčištění prostředků Dockeru – obrazy, kontejnery a svazky
Příjemnou práci!
Komentáře
Zatím žádné komentáře. Buďte první.