È uscito il Corso SQL Completo
Torna al blog

Cos'è Docker e a cosa serve

Cos'è Docker spiegato semplice: come funzionano i container, differenza con le macchine virtuali, cosa sono immagini e Dockerfile, vantaggi e perché Docker ha cambiato lo sviluppo.

Edoardo Midali

Edoardo Midali

Developer · Content Creator

3 min di lettura

"Sul mio computer funziona." È la frase più famosa e frustrante dello sviluppo software, e Docker nasce proprio per eliminarla. In questo articolo ti spiego cos'è Docker, come funzionano i container e perché questa tecnologia ha cambiato il modo in cui costruiamo e distribuiamo software, partendo dalle basi.

Cos'è Docker in parole semplici

Docker è uno strumento che permette di impacchettare un'applicazione insieme a tutto ciò che le serve per funzionare — codice, librerie, configurazioni — in un'unità isolata e portabile chiamata container. Un container gira allo stesso modo su qualsiasi macchina, eliminando il problema delle differenze tra ambienti.

Il concetto di container lo approfondisco in cos'è un container; qui ci concentriamo su Docker, che è lo strumento più diffuso per crearli e gestirli.

Il problema che Docker risolve

Immagina di sviluppare un'app sul tuo computer. Funziona perfettamente. Poi la passi a un collega, o la metti su un server, e... si rompe. Perché? Versioni diverse di librerie, configurazioni differenti, sistema operativo diverso. È il classico "sul mio computer funziona".

Docker risolve impacchettando l'app con tutto il suo ambiente. Il container porta con sé esattamente ciò che serve, così funziona identico ovunque: sul tuo PC, su quello del collega, sul server di produzione.

Container vs macchine virtuali

Spesso Docker viene confuso con le macchine virtuali. Sono simili nell'idea (isolare ambienti), ma molto diversi nella pratica:

AspettoMacchina virtualeContainer Docker
Cosa virtualizzaUn intero sistema operativoSolo l'applicazione e le sue dipendenze
PesoPesante (gigabyte)Leggero (megabyte)
AvvioLento (minuti)Rapidissimo (secondi)
RisorseMoltePoche

La differenza chiave: una macchina virtuale include un intero sistema operativo, mentre un container condivide il kernel del sistema ospite e contiene solo l'essenziale. Per questo i container sono molto più leggeri e veloci.

Concetti chiave di Docker

Tre termini fondamentali:

  • Immagine (image): è il "modello" da cui si creano i container. Contiene l'app e tutto il necessario, in sola lettura.
  • Container: è un'istanza in esecuzione di un'immagine. Da una stessa immagine puoi avviare molti container identici.
  • Dockerfile: è un file di testo con le istruzioni per costruire un'immagine, passo dopo passo.

Il flusso tipico: scrivi un Dockerfile → costruisci un'immagine → avvii uno o più container da quell'immagine.

I vantaggi di Docker

  • Coerenza tra ambienti: "funziona ovunque", non solo sul tuo computer.
  • Isolamento: ogni container è separato dagli altri, niente conflitti.
  • Leggerezza e velocità: molto più efficiente delle VM.
  • Portabilità: sposti i container tra macchine e cloud senza sorprese.
  • Scalabilità: facile avviare molte copie identiche di un'app.

Docker e Kubernetes

Quando i container diventano tanti, gestirli a mano diventa complicato: avviarli, distribuirli, riavviarli se cadono. Qui entra in gioco Kubernetes, che orchestra automaticamente molti container su più macchine. Docker crea i container, Kubernetes li coordina su larga scala.

In sintesi

Docker è uno strumento che impacchetta un'applicazione con tutto il suo ambiente in container leggeri, isolati e portabili, eliminando il problema delle differenze tra macchine. A differenza delle macchine virtuali, i container sono leggeri e velocissimi perché condividono il kernel del sistema. È diventato uno standard dello sviluppo moderno, ed è una competenza preziosa soprattutto in ambito DevOps.

Per approfondire, vedi cos'è un container e cos'è Kubernetes.