Docker – 6. Swarm

Docker Swarm umožnuje pracovať s viacerými hostiteľskými systémami.

Docker Swarm môžeme preložiť ako roj kontajnerov, ktorý obyčajne sídli na viacerých hostiteľských systémoch. Jednotlivé inštalácie projektu Docker na konkrétnych hostiteľských systémoch sa z pohľadu nástroja Docker Swarm nazývajú uzly (nodes). Riadiace uzly sú manažéri (managers), ostatné uzly zase pracovníci (workers). Manažéri zadávajú pracovníkom úlohy (tasks), ktoré definujú v službách (services).

Tip: Docker beží výborne vo WebSupport VPS. Vyskúšajte prémiový virtuálny server ešte dnes.

Inštalácia

Predstavíme si malú firmičku (resp. maličký roj), ktorá má jedného manažéra (majiteľa, riaditeľa) a ten zamestnáva dvoch pracovníkov (worker-1 a worker-2). Aby sme v nástroji Docker Swarm dokázali manažéra spojiť s pracovníkmi, potrebujeme zistiť IP adresy počítačov s uzlom typu manažér a tiež s uzlami typu pracovník. Ľudskou rečou: Manažér a pracovníci sa najskôr musia zoznámiť. Na všetkých troch počítačoch teda spustíme príkaz

hostname -I

a prvá IP adresa bude tá, ktorú potrebujeme použiť v tomto návode. Tu teda máme IP adresu manažéra 10.1.1.21, worker-1 má IP adresu 10.1.1.9 a worker-2 zase 10.1.1.10. Vaše IP adresy sa môžu líšiť.

Docker máme síce nainštalovaný na manažérskom hostiteľskom počítači, ale na ostatných dvoch (worker-1 a worker-2) Docker ešte len treba nainštalovať. Prihlásime sa teda cez SSH na worker-1 (10.1.1.9) a worker-2 (10.1.1.10) a postupujeme takto:

V prvom rade je potrebné zabezpečiť aktuálnosť všetkých balíkov. Nainštalujeme teda všetok updatovaný softvér pomocou dvoch príkazov v jednej dávke:

sudo apt update && sudo apt upgrade

Ak systém nájde aktualizovateľné balíčky, takto sa opýta, či ich chcete začať inštalovať:

Do you want to continue? [Y/n]

Stlačíme kláves y ak chceme začať aktualizačný proces alebo kláves n, ak aktualizovať nechceme. Následne stlačíme kláves Enter.

Na inštaláciu projektu Docker použijeme oficiálny skript, ktorý inštaláciu v termináli zjednoduší na 2 príkazy:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Po dokončení inštalácie na oboch hostiteľských počítačoch máme všetko pripravené a môžeme pristúpiť k používaniu nástroja Docker Swarm.

Manager

Na hostiteľskom počítači s IP adresou manažéra (tu 10.1.1.21, vaša sa môže líšiť) vytvoríme swarm týmto príkazom:

docker swarm init --advertise-addr 10.1.1.21

Ďalší postup nám nástroj Docker Swarm vypíše hneď po vytvorení swarm-u na hostiteľskom manažérskom počítači. Na pripojenie pracovníka do roja máme na počítači s IP adresou prvého a tiež druhého pracovníka (tu 10.1.1.9 a 10.1.1.10, vaše sa môžu líšiť) spustiť rovnaký príkaz:

docker swarm join --token SWMTKN-1-0e8pb0jgkf5fh0q9ttig4so3lhzdbwr1rha9dqcczvxryqdw27-1loythwbn59jxbkx2vj1qouxv 10.1.1.21:2377

Po vytvorení swarm-u na manažérskom hostiteľskom počítači sa vygeneruje unikátny identifikátor (token – tu SWMTKN-1-0e8pb0jgkf5fh0q9ttig4so3lhzdbwr1rha9dqcczvxryqdw27-1loythwbn59jxbkx2vj1qouxv, váš sa bude líšiť). Ide vlastne o názov firmy, ktorý práve manažér firme určil. Všetci pracovníci, ktorí vo firme chcú pracovať (join), musia okrem názvu (token) poznať ešte aj jej IP adresu a port (tu 10.1.1.21:2377, vaša sa môže líšiť). Ľudskou rečou: Manažér práve založil firmu, vybral jej názov, prijal dvoch pracovníkov a pracovníci práve nastúpili do práce (služby).

Že sa obaja pracovníci (worker-1 a worker-2) naozaj úspešne pripojili, zistíme jednak z potvrdzujúcej správy na hostiteľských počítačoch pracovníkov, a tiež na manažérskom hostiteľskkom počítači pomocou príkazu, ktorý vypíše jednotlivé uzly (node) typu manažér a pracovník:

docker node ls

Vypíše sa nám teda zoznam manažérov a pracovníkov pripojených do swarm-u a všetky dôležité údaje o nich.

Na všetkých 3 uzloch (node) teraz potrebujeme spustiť webový server Nginx a otvoriť port zvnútra kontajnera na hostiteľský počítač (-p 80:8080). Pomocou nástroja Docker Swarm si vytvoríme službu, ktorú nazveme nginx-swarm-test (--name nginx-swarm-test) a určíme, že chceme 3 kópie webového servera Nginx (--replicas=3). Aby sme mohli v príkazovom riadku po spustení služby ďalej pracovať, použijeme prepínač -d. Spustíme teda tento príkaz na manažérskom hostiteľskom počítači:

docker service create --name nginx-swarm-test --replicas=3 -d -p 80:8080 nginx

Takto zabezpečíme, že sa na všetkých 3 hostiteľských počítačoch spustí webový server Nginx. Overíme, či je služba s názvom nginx-swarm-test spustená (prvý riadok) a či sa v rámci tejto služby spustili úlohy (tasks) na všetkých 3 uzloch (druhý riadok). Ľudskou rečou: Manažér zadal úlohy sebe a rovnako obom pracovníkom v práci (službe).

docker service ls
docker service ps nginx-swarm-test

Keby sme sa chceli pozrieť, akú stránku nám webový server Nginx pošle na jednotlivých uzloch, stačí použiť nástroj curl a IP adresu uzla. Sme prihlásení na manažérskom hostiteľskom počítači a postupne zadáme tieto 3 príkazy:

curl localhost:8080
curl 10.1.1.9:8080
curl 10.1.1.10:8080

Zhrnutie

Ukázali sme si ako pomocou nástroja Docker Swarm pracovať s viacerými inštaláciami projektu Docker na viacerých hostiteľských systémoch.

Aktualizované 6. novembra 2020

Bol pre vás tento návod nápomocný?

Mohlo by vás tiež zaujímať:

Spýtajte sa nás, radi poradíme
Po - Ne 8:00-22:00
Kontaktovať podporu