Docker Swarm
Subito una chiarificazione: esistono in Docker due tipi di Swarm:
- Docker Swarm (vecchio) - plugin aggiuntivo a Docker base, come parte dell'offerta enterprise. E' obsoleto e non più supportato.
- Swarm Mode - funzionalità integrata nel Docker base moderno. Non occorre alcun plugin o licenza aggiuntiva.
Swarm Mode è basato su un cluster, i cui nodi possono essere ovunque in una rete visibile a ciascun nodo. E' una modalità di Orchestrazione Remota, da confrontarsi con Docker Compose che è uno strumento di Orchestrazione Locale.
Lo scopo di utilizzo di uno Swarm è di gestire su di esso servizi, con le seguenti proprietà:
- scalabilità - un servizio può essere deployed su più nodi del cluster
- bilanciamento del carico - accessi diversi sono a istanze diverse del servizio
- auto-riparazione - se un container fallisce, viene rigenerato; se un nodo fallisce, i suoi task sono re-istanziati su altri nodi
Terminologia
Un nodo è un'istanza di Docker Engine che partecipa ad uno swarm.
Vi sono due tipi di nodi:
- managers - controllano lo swarm ed allocano i task ai nodi
- workers - eseguono i task implementando i servizi
Un task è un container docker con i comandi eseguiti all'interno del container. Un task è allocato ad un nodo da uno dei manager.
Un servizio è un insieme di uno o più task uguali allocato a uno o più nodi e gestito come singola unità verso l'esterno del cluster.