Úvod
Kontajnerizácia získala v posledných rokoch v softvérovom technologickom priestore veľkú dynamiku. To možno pripísať Docker , čo je kontajnerová platforma, ktorá zjednodušuje správu procesov vo vnútri kontajnerov.
Kontajnery sú ľahké, virtualizované, prenosné, softvérovo definované štandardizované prostredia, ktoré umožňujú softvéru bežať v izolácii od iného softvéru bežiaceho na fyzickom hostiteľskom stroji. Táto vlastnosť prenosnosti umožňuje vývojárom modularizovať ich aplikácie do izolovaných služieb. Okrem toho môžu byť poskytované nezávisle, čo poskytuje priestor na škálovanie.
Hoci rozdelenie aplikácie na viacero služieb je určite skvelé, prináša so sebou réžiu spojenú so správou niekoľkých kontajnerov. Musíte zabezpečiť, aby komunikovali, spúšťali sa a vypínali v rovnakom čase. Vďaka nástroju s názvom Docker Compose sa to stáva jednoduchou úlohou. Docker Compose umožňuje vývojárom spúšťať multikontajnerové aplikácie Docker pomocou pravidiel definovaných v YAML súbore. Súbor YAML obsahuje definície služieb aplikácie a spôsob, akým môžu zdieľať dátové zväzky a siete. Po definovaní služieb ich môžete všetky spustiť jediným príkazom. V tomto návode, vám ukážeme, ako nainštalovať, nakonfigurovať a začať s Docker Compose na Ubuntu 20.04.
Požiadavky
-
Keďže ide o praktický návod, mali by ste mať nainštalované Ubuntu 20.04 ako vaše počiatočné operačné prostredie. Mali by ste mať tiež používateľa bez oprávnení root s privilégiami sudo. Tu je podrobný návod, ktorý vám pomôže nastaviť váš server Ubuntu. Podľa tohto návodu nakonfigurujte svoj súbor sudoers.
-
Musíte tiež nainštalovať Docker. Pozrite si tento návod na tému ako nainštalovať a prevádzkovať Docker na Ubuntu 18.04.
Krok 1: Inštalácia Docker Compose
Najnovšiu stabilnú verziu Docker Compose stiahneme z jeho oficiálneho repozitára GitHub. Najnovšiu verziu nájdete na stránke vydaní, v čase písania tohto návodu je najnovšia verzia 1.28.5.
Najprv sa prihláste na svoj server Ubuntu ako používateľ bez oprávnení root s právami sudo a zadajte nasledujúci príkaz. Stiahne najnovšie vydanie (1.28.5) a uloží spustiteľný súbor do /usr/local/bin/docker-compose adresára. Vďaka tomu bude globálne prístupný ako 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 stiahnutí zadajte nasledujúci príkaz na nastavenie príslušných oprávnení, aby bol príkaz docker-compose spustiteľný:
|
1 |
sudo chmod +x /usr/local/bin/docker-compose |
Teraz overte, či bola inštalácia úspešná a či je možné príkaz vyvolať spustením nasledujúceho príkazu:
|
1 |
docker-compose –version |
Mali by ste dostať výstup podobný tomuto:

To potvrdzuje, že Docker Compose bol úspešne nainštalovaný vo vašom systéme.
Krok 2: Vytvorenie súboru docker-compose.yml
Aby sme vám pomohli pochopiť, ako pracovať s docker-compose.yml, nakonfigurujeme prostredie webového servera pomocou oficiálneho obrazu Nginx z Docker Hub. Po nasadení by sme mali byť schopní poskytovať základnú HTML stránku z kontajnera.
Náš pracovný adresár vytvoríme v domovskom priečinku, z ktorého budeme pracovať. Na vytvorenie adresára zadajte nasledujúci príkaz:
|
1 |
mkdir ~/compose-example |
Ďalej sa presuňte do adresára:
|
1 |
cd ~/compose-example |
Po vstupe do adresára vytvorte priečinok aplikácie, ktorý bude koreňovým adresárom dokumentov pre prostredie Nginx. Tento priečinok môžeme nazvať app:
|
1 |
mkdir app |
- Vytvorenie HTML stránky
Použime textový editor nano na vytvorenie súboru index.html v priečinku app:
|
1 |
nano app/index.html |
Ďalej do súboru pridajte nasledujúci 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="sk"> <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>Príklad Docker Compose</title> <!-- Hlavné CSS pre Bootstrap --> <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">Skvelý príklad Docker Compose s CloudSigma</h1> <p class="h4"> Toto je základná statická HTML stránka. </p> <p class="lead text-muted"> Táto stránka je poskytovaná z Docker kontajnera Nginx vytvoreného pomocou <b>docker-compose </b> </p> </div> </div> </section> </main> </body> </html> |
Pre uloženie súboru stlačte CTRL + O, ENTER. Potom ho zatvorte pomocou CTRL + X. Ďalej vytvoríme docker-compose.yml súbor v koreňovom adresári nášho projektu.
- Hostovanie HTML stránky pomocou docker-compose
Ďalej zadajte nasledujúci príkaz na otvorenie súboru pomocou nano editora:
|
1 |
nano docker-compose.yml |
Potom do súboru pridajte nasledujúci úryvok 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 |
Súbor docker-compose.yml súbor začína číslom verzie, ktoré hovorí nástroju Docker Compose, ktorú verziu konfigurácie používame. Kliknutím na tento odkaz sa dozviete viac o verziách Docker Compose.
Po čísle verzie nasleduje blok služieb (services), ktorý obsahuje služby tvoriace prostredie. V tomto návode sme špecifikovali iba jedinú službu s názvom webserver. Služba webserver bude používať obraz nginx:alpine. Definovali sme tiež presmerovanie portov 8000:80. To znamená, že všetky požiadavky z portu 8000 na hostiteľskom stroji budú presmerované do kontajnera webserver na porte 80, kde beží Nginx.
Direktíva volumes vám umožňuje vytvoriť zdieľaný zväzok medzi hostiteľským strojom a kontajnerom, ktorý môžeme použiť na uchovanie údajov. V našom yml fragmente kódu zdieľame lokálny priečinok app s kontajnerom. Vo vnútri kontajnera bude umiestnený v umiestnení /usr/share/nginx/html. Týmto sa prepisuje predvolený koreňový adresár dokumentov pre Nginx. Súbor teraz môžete uložiť a zatvoriť.
Do tohto momentu ste vytvorili svoju vzorovú HTML webovú stránku a súbor docker-compose.yml s inštrukciami na zostavenie kontajnerizovaného prostredia webového servera. Pozrime sa v ďalšom kroku, ako môžeme toto nastavenie spustiť.
Krok 3: Spustenie príkazu Docker Compose
V tomto kroku spustíme príkaz na spustenie nášho kontajnerizovaného prostredia. Nižšie je uvedený jediný príkaz, ktorý inicializuje proces sťahovania obrazov Docker, vytvorí kontajner pre službu webserver a spustí kontajnerizované prostredie na pozadí:
|
1 |
docker-compose up -d |
Docker je navrhnutý tak, aby bol rýchly a efektívny, takže keď spustíte vyššie uvedený príkaz, najprv skontroluje váš lokálny systém, či obsahuje definovaný obraz. Ak chýba, stiahne ho z repozitára Docker Hub. Mal by sa zobraziť výstup podobný tomuto:

Po dokončení vykonávania príkazu sa spustí prostredie kontajnera bežiace na pozadí. To, že beží, môžete overiť pomocou príkazu:
|
1 |
docker-compose ps |
Mali by ste dostať podobný výstup:

Ak prejdete na IP adresu alebo doménové meno vášho servera a pridáte port 8000, t. j. server_domain_or_IP:8000 mali by ste vidieť vzorovú HTML stránku, ktorú sme vytvorili:

Ak si pamätáte, nastavili sme zdieľaný zväzok medzi kontajnerom a hostiteľským systémom. To udržiava súbory v kontajneri synchronizované so súbormi v hostiteľskom systéme. Preto, ak vykonáte zmenu v súbore index.html, automaticky sa zosynchronizuje s kontajnerom a prejaví sa pri opätovnom načítaní stránky v prehliadači. Môžete to vyskúšať pomocou editora nano. V ďalšom kroku sa naučíme niekoľko ďalších príkazov.
Krok 4: Ďalšie príkazy Docker Compose na správu kontajnerových prostredí
Teraz, keď ste úspešne nasadili webovú stránku pomocou jediného príkazu docker-compose-up, pozrime sa na niektoré ďalšie príkazy, ktoré môžu byť užitočné pri správe kontajnerizovaných prostredí.
Začneme príkazom logs. Záznamy (logy) môžu byť kľúčové pri riešení problémov so zlyhaním vašej aplikácie. Najprv spustite nasledujúci príkaz na zobrazenie záznamov vygenerovaných kontajnerom Nginx:
|
1 |
docker-compose logs |
Tu je ukážka výstupu zo záznamov:

Vykonávanie prostredia môžete pozastaviť bez zmeny stavu kontajnerov pomocou príkazu:
|
1 |
docker-compose pause |
![]()
Ďalej, na zrušenie pozastavenia alebo obnovenie vykonávania použite príkaz:
|
1 |
docker-compose unpause |
![]()
Možno budete chcieť zastaviť kontajnery bez zničenia ich údajov. Na tento účel použite nasledujúci príkaz:
|
1 |
docker-compose stop |
![]()
Na zničenie kontajnerov, sietí a zväzkov spojených s kontajnerizovaným prostredím použite príkaz:
|
1 |
docker-compose down |
![]()
Majte na pamäti, že vyššie uvedený príkaz neodstraňuje základné obrazy použité nástrojom Docker Compose na spustenie prostredia. To zaisťuje rýchlejšie zostavenie pri spúšťaní prostredia, pretože kontroluje lokálny počítač, či neobsahuje zhodné obrazy. Ak by ste chceli úplne odstrániť základný obraz, musíte ho špecifikovať v príkaze. V našom príklade môžeme odstrániť nginx:alpine obraz pomocou príkazu:
|
1 |
docker image rm nginx:alpine |

Na záver môžete nájsť viac príkazov v oficiálnej referencii pre príkazový riadok Docker Compose dokumentácii.
Záver
V tomto návode ste nainštalovali Docker Compose na Ubuntu 20.04, vytvorili ste kontajnerizované prostredie založené na obraze webového servera Nginx a naučili ste sa spravovať rôzne služby pomocou príkazov Docker Compose.
Ak sa chcete dozvedieť, ako nasadiť reálnu dynamickú aplikáciu, ktorá závisí od viacerých kontajnerov, prečítajte si náš návod na Nasadenie Laravel, Nginx a MySQL pomocou Docker Compose. Úplný zoznam príkazov docker-compose nájdete aj v oficiálnej dokumentácii Docker Compose.
Príjemnú prácu!
Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.