Docker e orchestration tools

   page       attach   
abstract

Il  progetto  nasce  con  lo  scopo  di  supportare  il  piano  didattico  del  corso  di  Sistemi Distributi con una presentazione di Docker e delle possibilità offerte dai tool di orchestrazione che si basano su questo tipo di tecnologia per fare sviluppo su larga scala di architetture distribuite.
Docker è un open platform per il deployment di applicazioni containerizzate, una tecnologia che fornisce un’astrazione aggiuntiva grazie alla virtualizzazione a livello di sistema operativo per consentire a ”contenitori software” indipendenti di coesistere sulla stessa istanza di OS, evitando l’installazione e la manutenzione di una macchina virtuale.
La vera potenzialità di Docker emerge però quando più container comunicano tra loro, attraverso una rete interna privata (che può anche essere pubblica) per scambiarsi informazioni e/o servizi:  questo concetto è materia per la container orchestration, metodologia altamente funzionale per un’enterprise che deve distribuire e gestire centinaia o migliaia di host, e che desidera automatizzare i processi di deployment, gestione, scalabilità e networking dei container.
Gli strumenti utilizzati per l’orchestrazione offrono un framework per la gestione di architetture e microservizi su larga scala.
Numerosi sono gli strumenti disponibili per la gestione del ciclo di vita dei container, ma, essendo fra i più diffusi, verranno trattati Kubernetes e Docker Swarm:

  • Docker Swarm:  tool di orchestrazione built in di Docker, ”Docker Swarm” gestisce  swarm,  insiemi  di  più  host  su  cui  il  Docker  Engine  (cuore  operativo della  Docker  Platform)  viene  eseguito  in  modalità  ”Swarm”, rendendo i nodi (macchine appertenenti allo Swarm) in grado di agire come manager (per gestire l’appartenenza allo swarm e la distribuzione dei compiti) o worker (per eseguire servizi).
  • Kubernetes:  architettura software con una struttura client-server che esegue su un cluster (cioè un gruppo di hosts, detti nodi) in cui dispiega la sua applicazione.

I ”partecipanti” al cluster si distinguono in master (Control Plane Node, coordinatore dell’esecuzione dei container ed esecutore dei processi della Control Plane) e worker (esecutore del carico di lavoro secondo le modalità definite dal master).

outcomes