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.