Úvod
Kontejnerizace získala v posledních letech v softwarovém technologickém prostoru velkou dynamiku. To lze přičíst Docker což je kontejnerová platforma, která zjednodušuje správu procesů uvnitř kontejnerů.
Kontejnery jsou lehké, virtualizované, přenosné, softwarově definované standardizované prostředí, které umožňuje softwaru běžet v izolaci od ostatního softwaru běžícího na fyzickém hostitelském stroji. Tato vlastnost přenositelnosti umožňuje vývojářům modularizovat své aplikace do izolovaných služeb. Navíc mohou být poskytovány nezávisle, což dává prostor pro škálování.
I když je rozdělení aplikace do více služeb rozhodně skvělé, přináší s sebou režii spojenou se správou několika kontejnerů. Musíte zajistit, aby spolu komunikovaly, spouštěly se a vypínaly ve stejnou dobu. Díky nástroji s názvem Docker Compose se to stává snadným úkolem. Docker Compose umožňuje vývojářům spouštět vícekontejnerové aplikace Docker pomocí pravidel definovaných v souboru YAML. Soubor YAML obsahuje definice služeb aplikace a způsob, jakým mohou sdílet datové svazky a sítě. Jakmile služby definujete, můžete je všechny spustit jediným příkazem. V tomto návodu vám ukážeme, jak nainstalovat, nakonfigurovat a začít s Docker Compose na Ubuntu 20.04.
Požadavky
-
Jelikož se jedná o praktický návod, měli byste mít jako výchozí operační prostředí nainstalované Ubuntu 20.04. Měli byste mít také uživatele bez oprávnění root s právy sudo. Zde je podrobný návod, který vám pomůže nastavit váš server Ubuntu. Podle tohoto návodu nakonfigurujte svůj soubor sudoers.
-
Musíte také nainstalovat Docker. Podívejte se prosím na tento návod na téma jak nainstalovat a provozovat Docker na Ubuntu 18.04.
Krok 1: Instalace Docker Compose
Budeme stahovat nejnovější stabilní verzi Docker Compose z jeho oficiálního repozitáře na GitHubu. Nejnovější verzi zjistíte na stránce s vydáními, v době psaní tohoto návodu je nejnovější verze 1.28.5.
Nejprve se přihlaste k serveru Ubuntu jako uživatel bez oprávnění root s právy sudo a zadejte následující příkaz. Ten stáhne nejnovější verzi (1.28.5) a uloží spustitelný soubor do adresáře /usr/local/bin/docker-compose. Díky tomu bude globálně přístupný jako docker-compose:
|
1 |
sudo curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
Po stažení zadejte následující příkaz pro nastavení příslušných oprávnění, aby byl příkaz docker-compose spustitelný:
|
1 |
sudo chmod +x /usr/local/bin/docker-compose |
Nyní ověřte, zda byla instalace úspěšná a zda lze příkaz vyvolat spuštěním následujícího příkazu:
|
1 |
docker-compose –version |
Měli byste obdržet výstup podobný tomuto:

To potvrzuje, že Docker Compose byl úspěšně nainstalován na vašem systému.
Krok 2: Vytvoření souboru docker-compose.yml
Abyste pochopili, jak pracovat se souborem docker-compose.yml, nakonfigurujeme prostředí webového serveru pomocí oficiálního obrazu Nginx ze služby Docker Hub. Po nasazení bychom měli být schopni z kontejneru poskytovat základní HTML stránku.
Pracovní adresář, ze kterého budeme pracovat, vytvoříme v domovské složce. Pro vytvoření adresáře zadejte následující příkaz:
|
1 |
mkdir ~/compose-example |
Dále se přesuňte do tohoto adresáře:
|
1 |
cd ~/compose-example |
Jakmile budete uvnitř adresáře, vytvořte složku aplikace, která bude kořenovým dokumentem pro prostředí Nginx. Tuto složku můžeme pojmenovat app:
|
1 |
mkdir app |
- Vytvoření HTML stránky
Použijme nano textový editor k vytvoření index.html souboru ve složce app:
|
1 |
nano app/index.html |
Dále do souboru přidejte následující HTML kód:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<!DOCTYPE html> <html lang="cs"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content=""> <meta name="generator" content="Hugo 0.80.0"> <title>Příklad Docker Compose</title> <!-- Základní CSS Bootstrapu --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous"> </head> <body> <main> <section class="py-5 text-center container"> <div class="row py-lg-5"> <div class="col-lg-6 col-md-8 mx-auto"> <h1 class="fw-light">Skvělý příklad Docker Compose s CloudSigma</h1> <p class="h4"> Toto je základní statická HTML stránka. </p> <p class="lead text-muted"> Tato stránka je poskytována z Docker kontejneru Nginx sestaveného pomocí <b>docker-compose </b> </p> </div> </div> </section> </main> </body> </html> |
Chcete-li soubor uložit, stiskněte CTRL + O, ENTER. Poté jej zavřete pomocí CTRL + X. Dále vytvoříme docker-compose.yml soubor v kořenovém adresáři našeho projektu.
- Hostování HTML stránky pomocí docker-compose
Dále zadejte následující příkaz pro otevření souboru pomocí nano editoru:
|
1 |
nano docker-compose.yml |
Poté do souboru přidejte následující fragment kódu:
|
1 2 3 4 5 6 7 8 |
version: '3.7' services: webserver: image: nginx:alpine ports: - "8000:80" volumes: - ./app:/usr/share/nginx/html |
Soubor docker-compose.yml soubor začíná číslem verze, které říká Docker Compose, jakou verzi konfigurace používáme. Chcete-li se dozvědět více o verzování Docker Compose.
Po čísle verze následuje blok služeb (services), který obsahuje služby tvořící prostředí. V tomto návodu jsme specifikovali pouze jedinou službu s názvem webserver. Služba webserver bude používat obraz nginx:alpine. Definovali jsme také přesměrování portů 8000:80. To znamená, že všechny požadavky z portu 8000 na hostitelském stroji budou přesměrovány do kontejneru webserveru na portu 80, kde běží Nginx.
Direktiva volumes umožňuje vytvořit sdílený svazek mezi hostitelským strojem a kontejnerem, který můžeme použít k uchování dat. V našem fragmentu kódu yml sdílíme lokální složku app s kontejnerem. Uvnitř kontejneru bude umístěna v adresáři /usr/share/nginx/html. Tím se přepíše výchozí kořenový adresář dokumentů pro Nginx. Nyní můžete soubor uložit a zavřít.
Do této chvíle jste vytvořili ukázkovou HTML stránku a soubor docker-compose.yml s instrukcemi pro sestavení kontejnerizovaného prostředí webového serveru. V dalším kroku se podíváme, jak toto nastavení spustit.
Krok 3: Spuštění příkazu Docker Compose
V tomto kroku spustíme příkaz pro spuštění našeho kontejnerizovaného prostředí. Níže je uveden jediný příkaz, který zahájí proces stahování obrazů Docker, vytvoří kontejner pro službu webserver a spustí kontejnerizované prostředí na pozadí:
|
1 |
docker-compose up -d |
Docker je navržen tak, aby byl rychlý a efektivní, takže když spustíte výše uvedený příkaz, nejprve zkontroluje váš lokální systém, zda obsahuje definovaný obraz. Pokud chybí, stáhne jej z repozitáře Docker Hub. Měl by se zobrazit výstup podobný tomuto:

Po dokončení provádění příkazu se spustí prostředí kontejneru běžící na pozadí. To, že běží, můžete ověřit pomocí příkazu:
|
1 |
docker-compose ps |
Měli byste získat podobný výstup:

Pokud přejdete na IP adresu nebo doménové jméno vašeho serveru a přidáte port 8000, tj. server_domain_or_IP:8000 měli byste vidět ukázkovou HTML stránku, kterou jsme vytvořili:

Pokud si pamatujete, nastavili jsme sdílený svazek mezi kontejnerem a hostitelským systémem. To udržuje soubory v kontejneru synchronizované se soubory v hostitelském systému. Pokud tedy provedete změnu v souboru index.html, ten se automaticky synchronizuje s kontejnerem a projeví se při obnovení stránky v prohlížeči. Můžete to vyzkoušet pomocí editoru nano. V dalším kroku se naučíme několik dalších příkazů.
Krok 4: Další příkazy Docker Compose pro správu kontejnerových prostředí
Nyní, když jste úspěšně nasadili webovou stránku pomocí jediného příkazu docker-compose-up, se podívejme na některé další příkazy, které mohou být užitečné při správě kontejnerizovaných prostředí.
Začneme příkazem logs. Protokoly (logy) mohou být klíčové při řešení problémů s selháním vaší aplikace. Nejprve spusťte následující příkaz pro zobrazení protokolů generovaných kontejnerem Nginx:
|
1 |
docker-compose logs |
Zde je ukázkový výstup protokolů:

Provádění prostředí můžete pozastavit bez změny stavu kontejnerů pomocí příkazu:
|
1 |
docker-compose pause |
![]()
Dále pro zrušení pozastavení nebo obnovení provádění použijte příkaz:
|
1 |
docker-compose unpause |
![]()
Možná budete chtít kontejnery zastavit bez zničení jejich dat. Chcete-li to provést, použijte následující příkaz:
|
1 |
docker-compose stop |
![]()
Chcete-li zničit kontejnery, sítě a svazky spojené s kontejnerizovaným prostředím, použijte příkaz:
|
1 |
docker-compose down |
![]()
Mějte na paměti, že výše uvedený příkaz neodstraňuje základní obrazy použité nástrojem Docker Compose ke spuštění prostředí. To zajišťuje rychlejší sestavení při spouštění prostředí, protože se na lokálním počítači kontroluje přítomnost odpovídajících obrazů. Pokud byste chtěli základní obraz zcela odstranit, musíte to uvést v příkazu. V našem příkladu můžeme odstranit nginx:alpine obraz pomocí příkazu:
|
1 |
docker image rm nginx:alpine |

Na závěr můžete najít další příkazy v oficiální referenci příkazové řádky Docker Compose dokumentaci.
Závěr
V tomto návodu jste nainstalovali Docker Compose na Ubuntu 20.04, vytvořili kontejnerizované prostředí založené na obrazu webového serveru Nginx a naučili se spravovat různé služby pomocí příkazů Docker Compose.
Pokud se chcete dozvědět, jak nasadit reálnou dynamickou aplikaci, která závisí na několika kontejnerech, přečtěte si náš návod na Nasazení Laravel, Nginx a MySQL pomocí Docker Compose. Úplný seznam příkazů docker-compose naleznete také v oficiální dokumentaci Docker Compose.
Přejeme příjemnou práci!
Komentáře
Zatím žádné komentáře. Buďte první.