Che cos’è Docker?

Il termine Docker si riferisce a vari elementi: il progetto di una community open source, gli strumenti utilizzati, l’azienda che supporta maggiormente il progetto e gli strumenti ufficialmente supportati da Docker. Il fatto che le tecnologie e l’azienda abbiano lo stesso nome può creare confusione.

Per fare chiarezza, ecco alcune definizioni.

  • Il software IT “Docker” è una tecnologia di containerizzazione che permette di creare e utilizzare container Linux.
  • La community open source Docker si occupa di migliorare questa tecnologia, affinché tutti gli utenti possano usufruirne in modo gratuito.
  • L’azienda Docker sviluppa ulteriormente le tecnologie realizzate dalla community, rendendole più sicure, per poi condividere i progressi con tutti gli utenti. Fornisce quindi supporto ai clienti aziendali, per le tecnologie migliorate e potenziate.

Docker permette di gestire i container come macchine virtuali modulari estremamente leggere. Inoltre, è possibile creare, installare, copiare e spostare i container da un ambiente all’altro in modo estremamente flessibile.

Come funziona Docker?

La tecnologia Docker utilizza il kernel di Linux® e le relative funzionalità, come Cgroups e spazi dei nomi, per isolare i processi affinché possano essere eseguiti in modo indipendente. L’obiettivo dei container è proprio quello di garantire tale indipendenza, ovvero la possibilità di eseguire più processi e applicazioni separatamente, per sfruttare in modo più efficace l’infrastruttura disponibile e mantenere al tempo stesso il livello di sicurezza che otterresti utilizzando sistemi separati.

Gli strumenti per i container, incluso Docker, forniscono un modello di deployment basato sull’immagine, che semplifica la condivisione di un’applicazione o un insieme di servizi, con tutte le relative dipendenze, tra più ambienti. Docker permette inoltre di automatizzare il deployment di un’applicazione (o di una serie di processi combinati che formano un’applicazione) all’interno dell’ambiente containerizzato.

Questi strumenti, basati sui container Linux, fanno di Docker uno strumento unico e intuitivo, e forniscono agli utenti metodi completamente nuovi di accesso alle app, oltre alla possibilità di accelerare il deployment e la capacità di controllare il rilascio e la distribuzione di nuove versioni.

La tecnologia Docker è la stessa utilizzata dai container Linux tradizionali?

No. Inizialmente, La tecnologia Docker è stata sviluppata a partire dalla tecnologia LXC, che molti associano ai container Linux tradizionali, ma in seguito si è evoluta. La tecnologia LXC consentiva una virtualizzazione leggera, ma non forniva un’esperienza soddisfacente a sviluppatori e utenti. La tecnologia Docker non consente solo di eseguire i container, ma semplifica – per fare alcuni esempi – la creazione e la realizzazione dei container, il trasferimento delle immagini e il controllo delle relative versioni.

I container Linux tradizionali utilizzano un sistema init che consente di gestire più processi, permettendo di eseguire intere applicazioni come una singola entità. La tecnologia Docker promuove la suddivisione delle applicazioni in processi separati e fornisce tutti gli strumenti necessari a tale scopo. Questo approccio granulare fornisce molti vantaggi.

Vantaggi dei container Docker

 

Modularità

L’approccio Docker alla containerizzazione è incentrato sulla possibilità di disattivare parte di un’applicazione, per aggiornarla o correggerla, senza necessariamente arrestare l’intera app. Oltre a fornire un approccio basato sui microservizi, consente di condividere i processi fra più app, analogamente a quanto avviene con le architetture SOA (Service-Oriented Architecture).

 

Controllo delle versioni delle immagini e dei livelli

Ciascun file di immagine di Docker è strutturato su più livelli, che insieme costituiscono una singola immagine. La modifica di un’immagine genera un livello. Ogni volta che un utente specifica un comando, ad esempio run o copy, viene creato un nuovo livello.

Docker riutilizza i livelli per generare rapidamente nuovi container. Le modifiche intermedie vengono condivise tra le immagini, migliorando ulteriormente velocità, dimensioni ed efficienza. Il controllo delle versioni va di pari passo con la gestione dei livelli. Ogni volta che viene apportata una modifica, si crea sostanzialmente un registro delle modifiche incorporato, che garantisce un controllo completo sulle immagini del container.

 

Rollback

La possibilità di eseguire il rollback costituisce probabilmente il vantaggio principale della gestione dei livelli. Ogni immagine contiene livelli. Se l’iterazione corrente dell’immagine non presenta le caratteristiche desiderate, basta eseguire il rollback alla versione precedente. Questo garantisce un approccio agile allo sviluppo, e permette di applicare anche agli strumenti il concetto di integrazione e deployment continui (CI/CD, Continuous Integration/Continuous Deployment).

 

Deployment rapido

Un tempo, la configurazione, l’attivazione e il provisioning dell’hardware richiedevano giorni, e comportavano carichi di lavoro e costi estremamente gravosi. I container basati su Docker possono ridurre il deployment a pochi secondi. Creando un container per ciascun processo, è possibile condividere rapidamente i processi simili con le nuove app. Inoltre, poiché non è necessario riavviare il sistema operativo per aggiungere o spostare un container, i tempi di deployment sono decisamente inferiori. Proprio grazie a questa velocità di deployment, è possibile creare dati ed eliminare i dati generati dai container in modo semplice ed economico.

Di conseguenza, la tecnologia Docker è un approccio più granulare, controllabile e basato sui microservizi, che valorizza maggiormente l’efficienza.

Share This