Docker – 6. Swarm

Docker Swarm umožnuje pracovat s vícero hostitelskými systémy.

Docker Swarm můžeme přeložit jako roj kontejnerů, který obyčejně sídlí na vícerých hostitelských systémech. Jednotlivé instalace projektu Docker na konkrétních hostitelských systémech se z pohledu nástroje Docker Swarm nazývají uzly (nodes). Řídící uzly jsou manažeři (managers), ostatní uzly zase pracovníci (workers). Manažeři zadávají pracovníkům úlohy (tasks), které definují ve službách (services).

Tip: Docker běží výborně ve WebSupport VPS. Vysoušejte prémiový virtuální server ještě dnes.

Instalace

Představíme si malou firmičku (resp. maličký roj), která má jednoho manažera (majitele, ředitele) a ten zaměstnává dva pracovníky (worker-1 a worker-2). Abychom v nástroji Docker Swarm dokázali manažera spojit s pracovníky, potřebujeme zjistit IP adresy počítačů s uzlem typu manažer a též s uzly typu pracovník. Řečeno lidsky: Manažer a pracovníci se nejdřív musí seznámit. Na všech třech počítačích tedy spustíme příkaz

hostname -I

a první IP adresa bude ta, kterou potřebujeme použít v tomto návodu. Zde tedy máme IP adresu manažera 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 se mohou lišit.

Docker máme sice nainstalovaný na manažerském hostitelském počítači, ale na ostatních dvou (worker-1 a worker-2) je Docker ještě potřeba nainstalovat. Přihlásíme se tedy přes SSH na worker-1 (10.1.1.9) a worker-2 (10.1.1.10) a postupujeme takto:

V první řadě je potřeba zabezpečit aktuálnost všech balíků. Nainstalujeme tedy všechen updatovaný software pomocí dvou příkazů v jedné dávce:

sudo apt update && sudo apt upgrade

Pokud systém najde aktualizovatelné balíčky, takto se zeptá, jestli je chcete začít instalovat:

Do you want to continue? [Y/n]

Stlačíme klávesu y když chceme začít aktualizační proces nebo klávesu n, pokud aktualizovat nechceme. Následně stlačíme klávesu Enter.

Na instalaci projektu Docker použijeme oficiální skript, který instalaci v terminálu zjednoduší na 2 příkazy:

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

Po dokončení instalace na obou hostitelských počítačích máme všechno připravené a můžeme přistoupit k používání nástroje Docker Swarm.

Manager

Na hostitelském počítači s IP adresou manažera (zde 10.1.1.21, vaše se může lišit) vytvoříme swarm tímto příkazem:

docker swarm init --advertise-addr 10.1.1.21

Další postup nám nástroj Docker Swarm vypíše hned po vytvoření swarm-u na hostitelském manažerském počítači. Na připojení pracovníka do roje máme na počítači s IP adresou prvního a také druhého pracovníka (zde 10.1.1.9 a 10.1.1.10, vaše se mohou lišit) spustit stejný příkaz:

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

Po vytvoření swarmu na manažerském hostitelském počítači se vygeneruje unikátní identifikátor (token – tu SWMTKN-1-0e8pb0jgkf5fh0q9ttig4so3lhzdbwr1rha9dqcczvxryqdw27-1loythwbn59jxbkx2vj1qouxv, váš se bude lišit). Jde vlastně o název firmy, který právě manažer firmě určil. Všichni pracovníci, kteří ve firmě chtějí pracovat (join), musí kromě názvu (token) znát ještě i její IP adresu a port (zde 10.1.1.21:2377, vaše se může lišit). Řečeno lidsky: Manažer právě založil firmu, vybral její název, přijal dva pracovníky a pracovníci právě nastoupili do práce (služby).

Že se oba pracovníci (worker-1 a worker-2) opravdu úspěšně připojili, zjistíme jednak z potvrzující zprávy na hostitelských počítačích pracovníků, a též na manažerském hostitelském počítači pomocí příkazu, který vypíše jednotlivé uzly (node) typu manažer a pracovník:

docker node ls

Vypíše se nám tedy seznam manažerů a pracovníků připojených do swarmu a všechny důležité údaje o nich.

Na všech 3 uzlech (node) teď potřebujeme spustit webový server Nginx a otevřít port zevnitř kontejneru na hostitelský počítač (-p 80:8080). Pomocí nástroje Docker Swarm si vytvoříme službu, kterou nazveme nginx-swarm-test (--name nginx-swarm-test) a určíme, že chceme 3 kopie webového serveru Nginx (--replicas=3). Abychom mohli v příkazovém řádku po spuštění služby dále pracovat, použijeme přepínač -d. Spustíme tedy tento příkaz na manažerském hostitelském počítači:

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

Takto zabezpečíme, že se na všech 3 hostitelských počítačích spustí webový server Nginx. Ověříme, jestli je služba s názvem nginx-swarm-test spuštěná (první řádek) a jestli se v rámci této služby spustily úlohy (tasks) na všech 3 uzlech (druhý řádek). Řečeno lidsky: Manažer zadal úlohy sobě a stejně tak oběma pracovníkům v práci (službě).

docker service ls
docker service ps nginx-swarm-test

Kdybychom se chtěli podívat, jakou stránku nám webový server Nginx pošle na jednotlivých uzlech, stačí použít nástroj curl a IP adresu uzlu. Jsme přihlášení na manažerském hostitelském počítači a postupně zadáme tyto 3 příkazy:

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

Shrnutí

Ukázali jsme si jak pomocí nástroje Docker Swarm pracovat s vícerými instalacemi projektu Docker na vícerých hostitelských systémech.

Aktualizováno: 12 října, 2021

Byl tento článek užitečný?

Related Articles

Zákaznická podpora
24 hodin denně, 7 dní v týdnu
KONTAKTOVAT PODPORU