Glossario

Container (Docker)

Un container è un pacchetto leggero che contiene un'applicazione insieme a tutto ciò che serve per eseguirla: codice, librerie e impostazioni. Gira allo stesso modo su qualsiasi computer o server dotato del software adatto. Docker è lo strumento che ha reso i container uno standard nello sviluppo e nel cloud.

Cos’è un container e come funziona

Un’applicazione ha bisogno di una versione precisa di un linguaggio, di certe librerie e di alcune impostazioni. Se queste cambiano da un computer all’altro, il programma funziona su una macchina e si blocca su un’altra. Un container impacchetta tutto in un’unità isolata, che si esegue sempre allo stesso modo. Il container usa funzioni del kernel di Linux per separare i processi e per limitare le risorse a disposizione di ciascuno.

Differenza tra container e macchina virtuale

Una macchina virtuale simula un computer intero, con un proprio sistema operativo, e occupa gigabyte di spazio e minuti per avviarsi. Un container condivide il sistema operativo della macchina ospite e contiene solo l’applicazione e le sue dipendenze: pesa megabyte e parte in pochi secondi. In compenso l’isolamento è meno forte di quello di una macchina virtuale, e una configurazione errata ha conseguenze sulla sicurezza.

Immagine, container e registro

  • Immagine: il modello di sola lettura, costruito a partire da un file di istruzioni chiamato Dockerfile.
  • Container: un’istanza in esecuzione di un’immagine. Dalla stessa immagine se ne avviano quanti si vuole.
  • Registro: il deposito in cui si conservano e si scaricano le immagini, come Docker Hub o i registri dei fornitori di cloud.

Vantaggi e limiti dei container

I container rendono gli ambienti di sviluppo, di test e di produzione identici, velocizzano i rilasci e permettono di eseguire molte applicazioni sulla stessa macchina. Ogni parte di un sistema può essere aggiornata da sola. I limiti sono la gestione dei dati permanenti, perché un container si può cancellare e ricreare senza che i dati interni sopravvivano, e la complessità quando i container diventano centinaia.

Container, Docker e Kubernetes

Docker è stato presentato nel 2013 e ha semplificato la creazione e l’uso dei container. Oggi il formato è standardizzato dalla Open Container Initiative, e Docker è uno strumento tra gli altri. Per gestire molti container su più server si usa un orchestratore, di solito Kubernetes. I container sono centrali nelle pratiche DevOps e si descrivono spesso in file YAML. Nel campo dell’edge computing permettono di distribuire un’applicazione su molti dispositivi periferici.

Fonti e approfondimenti