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.