Infrastruttura
Docker spiegato semplice: perché il software va in container.
“Sul mio computer funzionava” è la frase più temuta da chi commissiona software. Docker nasce per eliminarla: impacchetta un’applicazione con tutto ciò che le serve, così funziona allo stesso modo sul computer dello sviluppatore, su un server in ufficio o nel cloud.
Di Alessandro Negru · Sviluppatore software · · 4 min di lettura
01 / Il problema
Il problema che risolve
Un’applicazione non è solo il suo codice. Ha bisogno di una certa versione del linguaggio, di librerie, di un database, di impostazioni del sistema. Quando si installa tutto a mano su un server, basta una versione diversa per avere errori difficili da capire.
Con il tempo il server diventa un pezzo unico: nessuno sa più esattamente come è stato configurato, e spostarlo o ricrearlo dopo un guasto richiede giorni.
02 / Le basi
Cos’è un container
Pensa ai container delle navi: qualunque cosa contengano, hanno forme standard e si caricano su qualunque nave o camion. Un container software fa lo stesso: dentro c’è l’applicazione con tutto ciò che le serve, fuori ha una forma standard che qualunque server con Docker sa far girare.
La ricetta
Un file descrive passo per passo come costruire l’ambiente dell’applicazione. È scritto, versionato e leggibile.
L’immagine
Dalla ricetta si ottiene un pacchetto pronto, sempre uguale, che si può conservare e distribuire.
Il container
L’immagine in esecuzione: l’applicazione vera e propria, isolata dalle altre sullo stesso server.
La composizione
Un file (Docker Compose) descrive come si collegano più container: applicazione, database, server web.
È una macchina virtuale?
No. Una macchina virtuale simula un intero computer con il suo sistema operativo; un container condivide quello del server ed è quindi molto più leggero. Sullo stesso server possono girare decine di container.
03 / Il valore
Cosa cambia per un’azienda
| Aspetto | Installazione a mano | Con Docker |
|---|---|---|
| Nuovo server | Giorni di configurazione | Si avvia la stessa composizione |
| Aggiornamento | Rischio di rompere qualcosa | Si prova prima e si torna indietro se serve |
| Cambio fornitore | Bisogna ricostruire come era configurato | La configurazione è scritta nel progetto |
| Più applicazioni sullo stesso server | Conflitti tra versioni | Ognuna nel suo ambiente isolato |
Il vantaggio più sottovalutato riguarda il cambio di fornitore: la configurazione non vive più nella testa di una persona, ma in file che restano all’azienda.
04 / La scelta
Quando serve e quando no
Docker è una scelta sensata per gestionali, portali, API e in generale per software su misura che gira su un server. Ha meno senso per:
- un sito vetrina pubblicato su piattaforme che gestiscono già tutto, come Vercel o un hosting WordPress gestito;
- programmi desktop installati sui singoli computer;
- software di terze parti che il produttore supporta solo con la sua installazione.
05 / Esperienza sul campo
Un esempio reale
Il portale clienti di Toscana Stampaggi gira interamente in container: l’applicazione Django, il database PostgreSQL e il server web Caddy, ognuno nel suo ambiente e su reti separate.
Ogni nuova versione si installa con un comando che salva prima un backup, costruisce la nuova immagine e, se qualcosa non va, torna alla versione precedente. Lo stesso identico ambiente gira sul computer di sviluppo, quindi ciò che viene provato è ciò che va in produzione.
Il progetto del portale clientiCosa chiedere al fornitore
- Se domani il server si guasta, quanto tempo serve per rimettere in piedi il software su uno nuovo?
- La configurazione del server è scritta da qualche parte che resta a noi?
- Come si installa un aggiornamento, e come si torna indietro se crea problemi?
Per capire dove far girare i container, leggi anche la guida su dove ospitare un gestionale.