Úvod
Dátové zväzky Docker je dôležitým konceptom pri kontajnerizácii vašich aplikácií. Znalosť tohto konceptu je kľúčová pre zabezpečenie najlepšieho fungovania vašej kontajnerizovanej aplikácie spolu so spoľahlivým uchovávaním a správou dát. Avšak, hoci je tento koncept dôležitý, pre mnohých vývojárov je zároveň mätúci a zložitý. Pre vývojárov a špecialistov na DevOps je dôležité porozumieť tomu, ako nastaviť dátové zväzky Docker (Docker Data Volumes), pochopiť ich správne používanie, poznať rôzne typy zväzkov a vedieť, ktorý typ vybrať pre svoju aplikáciu.
Tento návod je zameraný na vysvetlenie konceptu a používania dátových zväzkov Docker. Po dokončení tohto návodu budete dokonale ovládať nastavenie a prácu s akýmkoľvek typom dátového zväzku Docker.
Požiadavky
Na sledovanie tohto návodu budete musieť mať nasledujúce položky:
- Ubuntu nainštalované. Pozrite si náš Ako nastaviť server Ubuntu 18.04 návod pre rýchlu referenciu.
- Používateľ Ubuntu s privilégiami sudo. Tento krok môže byť komplikovaný, najmä ak nie ste oboznámení s Linuxom. Prečítajte si Konfigurácia súboru Linux Sudoers pre podrobného sprievodcu.
- Docker nainštalovaný na Ubuntu. Ak chcete nainštalovať Docker na vaše Ubuntu, môžete postupovať podľa nášho Ako nainštalovať & prevádzkovať Docker na Ubuntu vo verejnom cloude blogu.
Hoci sa tento návod zameriava na správu Dockeru na Ubuntu, docker príkazy sú použiteľné vo všetkých operačných systémoch s nainštalovaným Dockerom.
Pochopenie toho, ako fungujú kontajnery Docker
Aby ste plne porozumeli dátovým zväzkom Docker, musíte vedieť, ako fungujú kontajnery Docker. V tejto časti poskytujeme prehľad základov pre nových používateľov Dockeru. Ak viete, ako Docker funguje, alebo ste skúseným používateľom Dockeru, môžete túto časť preskočiť a začať priamo s dátovými zväzkami.
Kontajnery Docker umožňujú spustiť aplikáciu nad hostiteľským operačným systémom nainštalovaním platformy Docker. Keďže platforma Docker je nainštalovaná na hostiteľskom operačnom systéme, vytvára sa abstrakcia medzi hostiteľským strojom a hosťovskou aplikáciou. Na rozdiel od virtuálneho stroja zdieľa kontajner Docker svoje linuxové jadro s hostiteľským operačným systémom. Keďže Docker nevyžaduje inštaláciu žiadneho ďalšieho operačného systému nad hostiteľským strojom, aplikácie Docker sú ľahké a prístupné na všetkých hostiteľských strojoch, pokiaľ je na danom hostiteľskom stroji nainštalovaný Docker.
Keďže neexistuje žiadny ďalší hosťovský OS, platforma Docker zdieľa prostriedky s hostiteľským strojom. Spustenie aplikácie Docker je rýchle, ale zložitosť nastáva, keď musíte zdieľať prostriedky. Docker nemá vlastnú pamäť ani úložisko na uchovávanie dát. Tieto prostriedky musia pochádzať z hostiteľského stroja. Ľudia zvyknutí na používanie virtuálnych strojov považujú tento proces zdieľania a správy prostriedkov za náročný. Nedostatok náležitých znalostí môže viesť k neočakávaným a nežiaducim výsledkom. Hoci tento návod predpokladá, že ste oboznámení s ekosystémom Docker, neváhajte si prejsť náš podrobný návod Čo je Docker? Prehľad ekosystému Docker pre rýchle zopakovanie.
Uchovávanie dát pomocou dátových zväzkov Docker
Pri práci s Dockerom nemôžete vytvoriť zväzok priamo v ňom. Preto na ukladanie dát musíme vytvoriť kontajner pre zväzok Docker s pripojeným zväzkom. Na prepojenie našej aplikácie Docker s týmto kontajnerom dátového zväzku používame Docker’ov --volume-from príkaz na získanie kontajnera a jeho pripojenie k našej aplikácii.
Tento proces si prejdeme krok za krokom:
- Najprv vytvorte nový kontajner s názvom
my-container spustením nižšie uvedeného príkazu:
1docker create -v /tmp --name my-container ubuntu
Týmto sa vytvorí nový kontajner v priečinku /tmp . Adresár priečinka môžete zmeniť podľa potreby. - Teraz, keď je váš dátový kontajner pripravený, môžete doň zapisovať spustením nového kontajnera Ubuntu s príznakom
--volume-from a následným spustením
bash. Všetko, čo zapíšeme do
tmp adresár sa uloží v našom hostiteľskom počítači v
/tmp priečinku:
1docker run -t -i --volumes-from my-container ubuntu /bin/bash
Voľba -t príkazového riadka vyvolá terminál z vnútra kontajnera. Príznak -i robí spojenie interaktívnym. V príkazovom riadku bash pre kontajner Ubuntu vytvorte súbor v /tmp:
1echo "Some sample data" > /tmp/sample_file - Nakoniec ukončite tento bash spustením príkazu
exit . Potom spustite nasledujúci príkaz:
1docker run -t -i --volumes-from my-container ubuntu /bin/bash
Svoj sample_file nájdete v tomto adresári. Počet špecifikovaných zväzkov nie je obmedzený. Pomocou príznaku --volumes-from môžete pridať toľko zväzkov, koľko chcete. Môžete tiež vytvoriť ľubovoľný počet kontajnerov pre dátové zväzky.
Prístup k dátam medzi hostiteľom a kontajnerom Docker
Pre čitateľov so skúsenosťami s virtualizáciou je táto možnosť podobná možnosti zdieľaného priečinka vo virtuálnych strojoch. Tu namiesto vytvorenia data-only kontajnera spustíme našu aplikáciu Docker pomocou obrazu Docker a prepíšeme jeden z jeho adresárov obsahom adresára na hostiteľskom systéme.
Bežným scenárom by bolo ukladanie súborov denníkov (logov) v hostiteľskom počítači. To môže byť potrebné, aby sme mohli tieto súbory analyzovať podľa potreby bez toho, aby sme museli ísť do vnútra stroja. Pre tento scenár predpokladajme, že používate Docker Nginx image a chcete uložiť jeho súbory denníkov v hostiteľskom počítači. Docker obraz Nginx zapisuje denníky do adresára /var/log/nginx , ale toto je /var/log/nginx vo vnútri Docker kontajnera Nginx. Toto umiestnenie preto nie je prístupné pre hostiteľský počítač.
Na dosiahnutie nášho cieľa by sme museli vytvoriť zdieľaný priečinok na ukladanie denníkov medzi hostiteľským počítačom a Docker obrazom Nginx. Nižšie tento proces ilustrujeme v jednoduchom návode krok za krokom:
- Najprv vytvorte adresár vo vašom hostiteľskom počítači, kde chcete ukladať denníky:
Potom spustite kontajner spustením nasledujúceho príkazu:1mkdir ~/my-nginxlogs
1docker run -d -v ~/my-nginxlogs:/var/log/nginx -p 5000:80 -i nginx
- Tento príkaz
run prijíma niekoľko argumentov, poďme si ich teda rozobrať, aby sme im lepšie porozumeli:
- -p 5000:80: Nastavte presmerovanie portov. Kontajner Nginx predvolene počúva na porte 80 a to mapuje port kontajnera Nginx 80 na port 5000 na hostiteľskom systéme.
- -d: Odpojte proces a spustite ho na pozadí.
- -v ~/my-nginxlogs:/var/log/nginx: Prepojíme adresár /var/log/nginx z vnútra kontajnera Nginx s adresárom /my-nginxlogs na hostiteľskom počítači. Tento znak : oddeľuje cestu hostiteľa od cesty kontajnera. Cesta hostiteľa je vždy na prvom mieste.
Teraz, keď náš kontajner Nginx beží, najprv skontrolujte, či server Nginx poskytuje služby na porte nášho hostiteľského počítača 5000 otvorením webového prehliadača a spustením URL adresy: http://localhost:5000. Keď sa zobrazí uvítacia stránka, váš server Nginx je pripravený a vytvára denníky vo svojom priečinku /var/log/nginx .
Ak otvoríte priečinok /my-nginxlogs na vašom hostiteľskom počítači, uvidíte tu súbory denníkov z Docker kontajnera Nginx. Ak vykonáte zmeny v priečinku /my-nginxlogs na hostiteľskom počítači počas chodu kontajnera Nginx, zmeny sa prejavia v priečinku kontajnera /var/log/nginx tiež.
Záver
V tomto návode sme zvolili komplexný prístup k pochopeniu dátových zväzkov Docker (Docker Data Volumes). Pozreli sme sa na vytváranie zväzkov pre vašu aplikáciu, zdieľanie dát medzi hostiteľom a kontajnerom Docker, typy dát a uchovávanie dát. To vám pomôže pri uchovávaní dát vo vašich kontajnerizovaných aplikáciách, ako aj pri správe stavu a konfigurácie aplikácie.
Pre ďalšie vzdelávanie o Docker si pozrite nasledujúce návody z nášho blogu:
- Ako hostovať repozitár Docker obrazov a zostavovať Docker obrazy pomocou GitLab Self-Managed inštancie na Ubuntu 20.04
- Zostavenie a nasadenie aplikácie Flask pomocou Dockeru na Ubuntu 20.04
- Nastavenie privátneho Docker registra na Ubuntu 18.04
- Ako zdieľať dáta medzi Docker kontajnerom a hostiteľom
- Vyčistenie prostriedkov Dockeru – obrazy, kontajnery a zväzky
Príjemnú prácu s počítačom!
Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.