Docker e il modello della containerizzazione

Dopo aver visto in un articolo precedente gli innumerevoli problemi che affliggono le applicazioni monolitiche e l’architettura a microservizi che ha l’obiettivo di risolvere tali problematiche, oggi parliamo della containerizzazione del software, una soluzione perfetta per semplificare la vita dei professionisti IT per la distribuzione delle applicazioni.

Un container, tradotto dall’inglese in “contenitore”, è un ambiente software che crea uno spazio completo per l’esecuzione di un’applicazione includendo librerie, framework e altre dipendenze. Rispetto alle macchine virtuali non necessità l’installazione di un sistema operativo, l’allocazione fissa di core della cpu, memoria ram e spazio disco. In questo modo il software risulta indipendente dall’hardware e dal sistema operativo del server fisico, di conseguenza l’intero ambiente è facilmente trasferibile e replicabile. Questo consente inoltre di trasferire le applicazioni senza problemi tra gli ambienti di sviluppo, test e produzione.

Nei container possiamo individuare ulteriori vantaggi come le ridotte dimensioni delle immagini generate, che si aggirano a poche decine di megabyte, la velocità di esecuzione, praticamente istantanea, la modularità, ottenuta in sinergia con l’architettura a micro servizi e i costi generali che sono notevolmente più contenuti.

Docker è un progetto open source nato seguendo la filosofia della containerizzazione ed ha lo scopo di automatizzare la creazione, l’implementazione e la gestione delle applicazioni containerizzate. Data la stretta relazione con il kernel Linux, Docker è disponibile nativamente negli ambienti Linux e, con una specifica tecnologia di virtualizzazione in grado di eseguire in kernel Linux, anche su Windows e Mac Os.

Possiamo riassumere Docker in tre parole chiave o fasi: build, ship e run. Build dove viene costruito il container partendo da un’immagine, un’entità contenente il file system ed una certa applicazione con tutte le relative dipendenze, che verrà convertita ed eseguita diventando un container. Un container è un’istanza in esecuzione di una certa immagine docker. Ship che consente lo spostamento del container verso un’altra infrastruttura server, svincolandosi dall’hardware e dal sistema operativo. Run per eseguire il container nell’infrastruttura di destinazione grazie al Docker Engine.

Esistono due versioni di Docker: la Community Edition, gratuita, che è semplicemente la versione base e quella Enterprise Edition, a pagamento, che ha un supporto tecnico dedicato e funzionalità aggiuntive. Giusto per conoscenza personale, il progetto è stato scritto per lo più in GO, il linguaggio di programmazione creato da Google.

Ti potrebbero interessare anche questi articoli
Articoli
Riccardo Riggi
Pillole di Time Management

Per realizzare un progetto necessitiamo di un certo quantitativo di risorse, tra le varie tipologie di risorse troviamo quelle economiche, materiali, umane e il famigerato

LEGGI »