Roj dockerů je (neboli Docker engine v režimu swarm) nativním clusteringovým řešením, které ze skupiny hostitelů Docker udělá jediný logický virtuální server. Swarm zajišťuje dostupnost a vysoký výkon vaší aplikace tím, že ji distribuuje na počet hostitelů Docker v clusteru.
S Docker swarm také můžete svou aplikaci škálovat horizontálně, tj. zvýšit počet instancí kontejneru pro stejnou aplikaci.
Naše infrastruktura

Pro ukázku používám smíšené prostředí operačního systému:
Název hostitele | IP adresa | Operační systém | Účel |
---|---|---|---|
dockerm.itgeek.local | 192.168.12.10 | CentOS 7 | Působí jako správce Dockeru, který spravuje Docker engine běžící na uzlech. Docker manager také vezme část clusteru, tj. bude také spouštět kontejnery. |
node1.itzgeek.local | 192.168.12.20 | Ubuntu 16.04 | Worker Node 1 (spuštěný motor Docker) |
node2.itzgeek.local | 192.168.12.30 | Fedora 26/25 | Worker Node 2 (spuštěný motor Docker) |
Docker swarm byl dříve samostatný nástroj. Nyní je integrován s modulem Docker od v 1.12 . Stačí tedy nainstalovat Docker engine na všech vašich hostitelích (Manager and Worker Nodes ).
ČTĚTE :Jak nainstalovat Docker Community Edition na CentOS 7 / RHEL 7
ČTĚTE :Jak nainstalovat Docker Community Edition na Ubuntu 16.04
ČTĚTE :Jak nainstalovat Docker Community Edition na Fedoru 26 / Fedora 25
Firewall
Pro správnou funkci swarm clusteru byste museli otevřít následující porty na firewallu.
CentOS / Fedora:
firewall-cmd --permanent --add-port=7946/tcpfirewall-cmd --permanent --add-port=4789/udpfirewall-cmd --permanent --add-port=7946/udpfirewall-cmd -- trvalé --add-port=2376/tcpfirewall-cmd --permanent --add-port=2377/tcpfirewall-cmd --permanent --add-port=80/tcp ## Testujeme Docker Swarm s WebService firewall-cmd --reload
Ubuntu:
ufw statusufw povolit 2376/tcpufw povolit 7946/tcpufw povolit 7946/udpufw povolit 2377/tcpufw povolit 4789/udpufw povolit 80/tcp ## Testujeme Docker Swarm s WebService ufw reloadufw povolit
Po otevření požadovaných portů restartujte jádro Dockeru, protože řetězec brány firewall ovlivňuje pravidla dockeru.
systemctl restart docker
Dále jsou všechny zmíněné příkazy univerzálními příkazy dockeru, takže příkaz můžete spustit na jakémkoli operačním systému, který Docker podporuje (v našem případě CentOS 7 , Ubuntu 16.04 a Fedora 26/25 ).
Vytvořit roj
Začněme vytváření clusteru pomocí „swarm init “. Spusťte následující příkaz ve svém manažerském uzlu (dockerm.itzgeek.local ).
[root@dockerm ~]# docker swarm init --advertise-addr 192.168.12.10
–advertise-addr volba určuje uzel správce, který má publikovat svou adresu jako 192.168.12.10 aby se pracovní uzel mohl připojit ke clusteru.
Výstup:
Swarm inicializován:aktuální uzel (uhh38rpazd5tnzjph2g5rhgxy) je nyní správcem. Chcete-li do tohoto roje přidat pracovníka, spusťte následující příkaz: docker swarm join \ --token SWMTKN-1-5y1u36a0osykywxeme2akpjp4jgx2l67mbqbc4fnazs39bp314-e6djx8ma2qnevolztpplkn26j \ 192.168.12.10:2377 Chcete-li k tomuto swarmu přidat správce, spusťte „docker swarm join-token manager“ a postupujte podle pokynů.
Výše uvedený výstup má token pro přidání pracovních uzlů do clusteru.
Prohlédněte si aktuální stav roje pomocí následujícího příkazu.
[root@dockerm ~]# informace o dockeru
Výstup:
Kontejnery:0 Spuštěno:0 Pozastaveno:0 Zastaveno:0Obrázky:0Verze serveru:17.03.1-ceStorage Driver:devicemapper Název fondu:docker-253:1-297-pool. . ... . Soubor smyčky metadat:/var/lib/docker/devicemapper/devicemapper/metadata Library Verze:1.02.135-RHEL7 (2016-11-16) Ovladač protokolování:json-fileCgroup Driver:cgroupfsPlugins: Svazek:místní síť:bridgell hostitel macvlan překrytíRoj:aktivní NodeID:uhh38rpazd5tnzjph2g5rhgxy Je správce:true ClusterID:kp8tgowwcuiv3om0wzfgpngp7 Správci:1 Uzly:1 Orchestrace: Limit uchování historie úkolů:5 Raft: Interval snímků:10 000 Počet starých snímků k uchování:0 Prezenční signál:1 Volební tiket:3 Dispečer: Období prezenčního signálu:5 sekund Konfigurace CA: Doba platnosti Uzel.2:3 měsíce 12.10 Adresy manažer:192.168.12.10:2377Runtimes:runcDefault chodu:runcInit Binární:docker-initcontainerd verze:4ab9917febca54791c5f071a9d1f404867857fccrunc verze:54296cf40ad8143b62dbcaa1d90e520a2136ddfeinit verze:949e6faSecurity Volby:Seccomp profil:defaultKernel version:3.10.0-123.el7.x86_64Operating systém:CentOS Linux 7 (Jádro)OSTyp:linuxArchitektura:x86_64CPU:1Celková paměť:979,9 MiBNázev:dockerm.itzgeek.local ID:OTNI:UJZA:7CC4:TS5N:TVJ7:XXQE:5J7Q:ENWW:ZVPD:3VJI:F5DL:JYSPDocker Root Dir:/var/lib/dockerDebug Mode (klient):falseDebug Mode (server):falseRegistry:https:/ /index.docker.io/v1/VAROVÁNÍ:bridge-nf-call-iptables je zakázán UPOZORNĚNÍ:bridge-nf-call-ip6tables je zakázán Experimentální:falseInsecure Registries: 127.0.0.0/8Live Restore povoleno:false
Pomocí následujícího příkazu můžete vypsat seznam uzlů Docker v roji.
[root@dockerm ~]# uzel dockeru ls
Výstup:
ID HOSTNAME STAV DOSTUPNOST STAV SPRÁVCEuhh38rpazd5tnzjph2g5rhgxy * dockerm Leaditzgeek local Readitzgeek local Readitzgeek. Stránky:1 2
Jak nastavit soukromý registr Docker na CentOS 7 / Ubuntu 16.04 / Fedora 26/25 Jak zaregistrovat linuxové servery na Katello Server pomocí aktivačního klíčeCent OS