Dockerizace nově definovala proces nasazení a automatizace v softwarovém průmyslu. Od svého vzniku se Docker tým neustále snaží o to, aby bylo automatizované nasazení bezproblémové. Kontejnerizační technologie nejenže umožňuje rychlý vývoj aplikací a efektivitu, ale také šetří čas a namáhavé úsilí. Bezkonkurenční funkce, jako je orchestrace, definování a spouštění aplikací s více kontejnery, dělají z Dockeru oblíbenou volbu pro vývojáře.
Kontejnery a obrazy Dockeru
Než se ponoříte do hlubšího porozumění Dockeru, je nezbytné si zopakovat základy. Pochopit, jak Docker funguje, může být složité, pokud s ním nemáte žádné zkušenosti. V této části definujeme několik pojmů, které jsou pro začátečníky zásadní. Pokud si myslíte, že jste s těmito pojmy obeznámeni, klidně je přeskočte a přejděte k další části. Můžete se také podívat na našeho komplexního průvodce, který vysvětluje základní koncepty Dockeru.
-
Obrazy Dockeru
Obrazy Dockeru jsou sadou souborů pouze pro čtení. Jakmile obrazy Dockeru vytvoříte, nemůžete je upravovat, i když je lze smazat. Obraz Dockeru používáme k vytvoření jednoho nebo více kontejnerů Dockeru podle našich potřeb. Chcete-li zkontrolovat počet obrazů spuštěných ve vašem systému, použijte příkaz:
|
1 |
$docker images |
Když stahujete obrazy ze vzdáleného registru, jako je Docker Hub, stahujete soubory a složky. Chcete-li stáhnout obraz, použijte příkaz:
|
1 |
$docker pull (název obrazuthe image) |
-
Kontejnery Dockeru
Obrazy Dockeru jsou předlohou pro kontejnery Dockeru. Technicky vzato je kontejner Dockeru instancí obrazu Dockeru. Představte si, že pokud je obraz Dockeru jako rodič, pak kontejner Dockeru je dítě. Na rozdíl od obrazů Dockeru, které můžete vytvořit jednou, můžete pomocí jediného obrazu vytvořit více kontejnerů. Chcete-li zkontrolovat seznam obrazů spuštěných ve vašem systému, použijte příkaz:
|
1 |
$docker ps |
Chcete-li stáhnout kontejner, použijte následující příkaz:
|
1 |
$docker pull (název kontejneruthe container) |
-
Jak fungují obrazy a kontejnery Dockeru
Obrazy a kontejnery Dockeru spolupracují ruku v ruce, aby uvolnily potenciál Dockeru. Jediný kontejner se sestavuje z obrazu Dockeru pomocí příkazu run. Když vytvoříte kontejner Dockeru, vytvoří se nová vrstva známá jako Container Layer (vrstva kontejneru). Nově vytvořená vrstva obsahuje aplikaci a její závislosti. Každý vytvořený kontejner má jinou vrstvu Container Layer pro čtení/zápis a jakékoli změny provedené v kontejneru Dockeru se automaticky projeví ve vrstvě Container Layer. Nezapomeňte, že pokud se rozhodnete kontejner smazat, přijdete také o vrstvu Container Layer.
Seznamte se s Docker Compose
Docker Compose je nástroj pro správu kontejnerů, který vám umožňuje konfigurovat a orchestrovat všechny vaše kontejnery Dockeru do jediného souboru YAML . Spouštění, zastavování a vytváření propojení a svazků mezi kontejnery je s tímto nástrojem mnohem snazší.
-
Co dělá Docker Compose?
Jednoduše řečeno, Docker Compose usnadňuje složité úkoly tím, že eliminuje konflikty a organizační problémy. Umožňuje uživatelům spravovat různé kontejnery Dockeru centrálně. Jinými slovy, namísto toho, aby byly všechny služby v jednom velkém kontejneru, Docker Compose rozděluje službu do několika služeb, takže k nim uživatelé mohou snadno přistupovat a spravovat je.
V této příručce vás provedeme kroky instalace aktuální verze nástroje Docker Compose pro správu aplikací s více kontejnery na systému CentOS 7. Projdeme si také některé základní příkazy, které potřebujete k úspěšnému používání tohoto softwaru.
-
Jak používat Docker Compose
Používání Docker Compose je extrémně snadné, a to i pro nováčky. Podívejme se na tříkrokový proces, který Docker Compose využívá:
1. Sestavení: Nejprve sestavte obrazy v souboru Dockerfile podle potřeb vašeho projektu, nebo je případně stáhněte z registru.
2. Definování: Dále musíte definovat všechny komponenty služeb v souboru compose.yml.
3. Spuštění: Po definování komponent je čas je spustit pomocí příkazu docker-compose.
Požadavky
Než pokročíme s instalací Docker Compose na váš server CentOS, ujistěte se, že máte:
- Uživatele bez oprávnění root s přístupem k sudo na serveru CentOS 7.
- Nainstalovaný Docker na vašem počítači. Přečtěte si prosím tento návod na téma jak nainstalovat a provozovat Docker na Ubuntu 18.04.
Nyní máte vše připraveno. Dále postupujte podle níže uvedených kroků pro instalaci Docker Compose na CentOS 7.
Krok 1: Instalace Docker Compose
Chcete-li získat nejnovější verzi Docker Compose, postupujte podle pokynů v dokumentaci k Dockeru a stáhněte si binární soubory z Docker’s GitHub repozitáře. Spuštěním níže uvedeného příkazu zkontrolujte, zda máte nejnovější verzi softwaru:
|
1 |
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
Chcete-li binární soubor spustit, nastavte níže uvedená oprávnění:
|
1 |
sudo chmod +x /usr/local/bin/docker-compose |
Dále vyhledejte svou verzi a zkontrolujte, zda byla instalace úspěšná:
|
1 |
$docker-compose --version |
Níže uvedený kód vypíše nainstalovanou verzi:
Poté můžete spustit příklad “Hello World” pomocí nainstalovaného nástroje Docker Compose.
Krok 2: Použití Docker Compose ke spuštění kontejneru
V Docker Hubu, veřejném registru Dockeru, se nachází obraz “Hello World”, který lze použít pro demonstraci a testování. Ukazuje, jak spustit kontejner pomocí Docker Compose s naprosto minimální konfigurací. Nejprve musíte vytvořit adresář pro náš soubor YAML:
|
1 |
$mkdir hello-world |
Dále se přesuňte do tohoto adresáře:
|
1 |
$cd hello-world |
Poté pomocí svého oblíbeného textového editoru vygenerujte soubor YAML. V tomto návodu použijeme Vi:
|
1 |
$vi docker-compose.yml |
Stiskněte i pro přechod do režimu vkládání, poté do souboru napište toto:
|
1 2 |
my-test: image: hello-world |
Do názvu kontejneru bude začleněn první řádek. Druhý řádek říká programu, který obraz má použít k vytvoření kontejneru. docker-composeup se po zadání příkazu pokusí vyhledat lokální obraz s názvem hello-world, aby ověřil, zda je k dispozici. Chcete-li ukončit režim vkládání, stiskněte ESC. Poté zadejte :x a stiskněte ENTER pro uložení a ukončení souboru. Příkaz docker images lze použít k ruční kontrole obrazů ve vašem počítači:
|
1 |
$ sudo docker images |
Pokud v počítači nejsou vůbec žádné lokální obrazy, zobrazí se pouze záhlaví sloupců:
Chcete-li vytvořit kontejner, spusťte tento příkaz, zatímco jste stále v adresáři /hello-world:
|
1 |
$sudo docker-compose up |
Při prvním spuštění příkazu, pokud neexistuje lokální obraz s názvem hello-world, bude stažen z repozitáře Docker Hub:
Aby se ověřilo, že instalace funguje, Docker Compose stáhne obraz, sestaví kontejner, připojí jej a spustí program hello program:
Poté se zobrazí výpis s popisem toho, co bylo provedeno:
Jakmile hello dokončí svou úlohu, kontejner se vypne a příkaz v něm již nepoběží. Při pohledu na aktivní procesy se zobrazí záhlaví sloupců. Kontejner hello-world však nebude uveden, protože momentálně neběží:
|
1 |
$sudo docker ps |
Chcete-li zobrazit všechny kontejnery, nejen ty aktuální, použijete příznak -a flag:
|
1 |
$sudo docker ps -a |
Nyní, když jste si vyzkoušeli spuštění kontejneru, můžete přejít k seznámení s některými základními příkazy Docker Compose.
Step 3: Docker Compose Commands
Abyste mohli s Docker Compose začít, tato část projde základní příkazy, které poskytuje nástroj docker-compose. docker-compose je příkaz, který funguje na bázi jednotlivých adresářů. Vygenerováním jednoho adresáře pro každý kontejner a jednoho souboru docker-compose.yml na adresář můžete na stejném počítači spustit mnoho skupin kontejnerů Docker.
Dosud jste Docker Compose spouštěli sami. Můžete jej vypnout stisknutím Ctrl-C. To umožní oknu terminálu zobrazovat ladicí zprávy. V produkčním prostředí je však doporučeno spouštět docker-compose jako službu. K jednoduchému dosažení tohoto cíle lze použít volbu -d:
|
1 |
docker-compose up -d |
Nyní se docker-compose přesune na pozadí. Vaši skupinu kontejnerů Docker (ať už zastavených nebo běžících) lze spravovat pomocí následujícího příkazu:
|
1 |
$sudo docker-compose ps -a |
The State kontejneru bude hlášen jako Exited, pokud je zastaven, jak je vidět v příkladu níže:
Aktuálně běžící kontejner zobrazí:
|
1 2 3 4 |
Name Command State Ports --------------------------------------------------------------- nginx_nginx_1 nginx -g daemon off; Up 443/tcp, 80/tcp |
Všechny běžící kontejnery Docker můžete ukončit ve stejném adresáři, kde se nachází soubor docker-compose.yml, který jste použili ke spuštění skupiny Docker:
|
1 |
$docker-compose stop |
Note: Pokud potřebujete věci ukončit vynuceně, je k dispozici také docker-compose kill.
V některých případech mohou kontejnery Docker ukládat svá stará data uvnitř. Pokud chcete začít od nuly, použijte příkaz rm k odstranění všech kontejnerů z vaší skupiny kontejnerů:
|
1 |
$docker-compose rm |
Spuštění kteréhokoli z těchto příkazů z jiného adresáře, než ve kterém je umístěn kontejner Docker a soubor .yml, povede k chybové zprávě:
|
1 2 3 4 5 6 |
ERROR: Can't find a suitable configuration file in this directory nebo any parent. Are you in the right directory? Supported filenames: docker-compose.yml, docker-compose.yaml |
V této části jsme probrali základy manipulace s kontejnery pomocí Docker Compose. Jak bylo uvedeno, v následující části můžete přistupovat k souborovému systému Dockeru a spouštět příkazy z příkazové řádky uvnitř kontejneru, pokud potřebujete nad svými kontejnery větší kontrolu.
Step 4: Access the Docker Container Filesystem
Je možné spustit příkazový řádek v kontejneru a přistupovat k souborovému systému kontejneru pomocí docker exec, což je nástroj příkazové řádky. Jako příklad spusťte “Hello World” a podívejte se, jak dlouho trvá dokončení příkazu docker exec. Pro účely tohoto návodu lze využít Docker Hub image of Nginx. Vytvořte nový adresář s názvem nginx a přejděte do něj:
|
1 2 |
mkdir ~/nginx cd ~/nginx |
Nyní byste měli mít soubor docker-compose.yml, který můžete otevřít v textovém editoru:
|
1 |
vi docker-compose.yml |
Poté do souboru přidejte následující:
|
1 2 |
nginx: image: nginx |
Nyní je čas aplikaci zavřít. Chcete-li spustit kontejner Nginx na pozadí, použijte následující příkaz:
|
1 |
$sudo docker-compose up -d |
Docker Compose stáhne obraz Nginx a spustí kontejner na pozadí. Chcete-li pokračovat, budete muset zadat CONTAINER ID. Všechny aktuálně běžící kontejnery si můžete prohlédnout pomocí následujícího příkazu:
|
1 |
$sudo docker ps |
Uvidíte následující:
Pokud byste chtěli změnit souborový systém uvnitř tohoto kontejneru pomocí docker exec, použili byste jedinečné ID kontejneru (v tomto případě f139d0d78ca7) k vytvoření shellu uvnitř kontejneru:
|
1 |
$sudo docker exec -it f139d0d78ca7 /bin/bash |
Interaktivní terminál lze otevřít pomocí volby -t, zatímco /bin/bash poskytuje kontejneru bash shell. Toto je výzva bashe, kterou poté pro kontejner uvidíte:
|
1 |
root@b86b6699714c:/# |
Uvnitř kontejneru najdete příkazový řádek. Restartování kontejneru přepíše veškeré změny, které jste provedli, pokud nepracujete v adresáři, který byl uložen jako součást datového svazku. Pokud jste zvyklí pracovat s příkazovým řádkem Linuxu, měli byste vědět, že většina obrazů Docker je vytvořena s použitím nejzákladnějších instalací Linuxu.
Závěr
Provedli jsme vás kroky instalace aktuální verze Docker Compose pro správu aplikací s více kontejnery na CentOS 7. Schopnost Docker Compose současně spouštět a vypínat velké množství kontejnerů je působivá. Přechod od šablon k aplikacím trvá jen několik minut. Pokud tedy vaše práce zahrnuje spouštění více kontejnerů najednou, je použití Docker Compose skvělou volbou. Nejedná se však o univerzální řešení. V závislosti na vašich konkrétních potřebách můžete najít i lepší možnosti, například Kubernetes.
Chcete-li dále prozkoumat možnosti Docker Compose, můžete se podívat na tyto návody z našeho blogu:
- Nasazení Laravel, Nginx a MySQL pomocí Docker Compose
- Jak nainstalovat a nakonfigurovat Docker Compose na Ubuntu 20.04
Příjemnou práci s počítačem!






Komentáře
Zatím žádné komentáře. Buďte první.