Vai al contenuto principale

Aggiornare Docker: guida passo dopo passo

Impara ad aggiornare Docker Engine, Docker Desktop e le immagini dei container — senza rompere la tua configurazione.
· 12 min leggi

Scopri con l'IA

Aggiornare Docker può voler dire tre cose completamente diverse. Potresti dover aggiornare Docker Engine, Docker Desktop o le immagini su cui girano i tuoi container.

La maggior parte degli sviluppatori non sa quale dei tre debba effettivamente aggiornare, quindi o aggiornano tutto (con il rischio di rompere l'ambiente) o evitano del tutto gli aggiornamenti (esponendosi a vulnerabilità). Per aggiornare Docker in sicurezza, ti basta sapere cosa stai aggiornando e seguire i passaggi giusti per ciascuno scenario.

In questo articolo ti guiderò attraverso i percorsi di aggiornamento più sicuri e comuni, senza tentativi alla cieca. Imparerai cosa fa davvero ciascun tipo di aggiornamento Docker, quando ti serve ognuno e come eseguire gli aggiornamenti passo dopo passo senza rompere i container esistenti.

Se sei alle prime armi con Docker, inizia da Introduction to Docker per costruire le basi prima di occuparti di aggiornamenti e manutenzione.

Cosa significa davvero "aggiornare Docker"?

Come accennato, il termine "aggiornare Docker" può riferirsi a tre cose diverse, e confonderle è il modo più semplice per rompere accidentalmente un sistema funzionante. Potresti aggiornare Docker Engine (il software principale che esegue i container), Docker Desktop (l'applicazione con interfaccia grafica) o le immagini dei container usate dalle tue applicazioni.

Ogni tipo di aggiornamento influisce sul sistema in modo diverso. Ti spiego come.

Aggiornare Docker Engine vs. aggiornare le immagini

Docker Engine è il runtime che gestisce i tuoi container.

Quando aggiorni Docker Engine, stai aggiornando il software che crea, esegue e gestisce i container sul tuo sistema. È una modifica a livello di sistema che riguarda il funzionamento di Docker. Stai installando nuovi binari, aggiornando il demone e potenzialmente cambiando il modo in cui Docker interagisce con il sistema operativo.

Le immagini dei container sono i blueprint da cui vengono eseguiti i tuoi container.

Aggiornare un'immagine significa scaricare una versione più recente dell'applicazione impacchettata dentro quel container. Per esempio, se stai eseguendo PostgreSQL 14 in un container e vuoi passare a PostgreSQL 18, aggiornare l'immagine significa scaricare la nuova versione. Docker Engine in sé non cambia: cambia solo il software dentro i tuoi container.

La cosa fondamentale da ricordare è che aggiornare Docker Engine può influenzare tutti i tuoi container, mentre aggiornare un'immagine influisce solo sui container creati da quella specifica immagine.

Cosa succede ai container in esecuzione

Gli aggiornamenti di Docker Engine non riavviano automaticamente i container.

Quando aggiorni Docker Engine su Linux, il demone Docker si riavvia, ma i tuoi container restano in esecuzione nella maggior parte delle configurazioni moderne. Docker usa una funzionalità chiamata live restore che mantiene vivi i container durante gli aggiornamenti del demone. Puoi controllare se è attiva eseguendo docker info e cercando "Live Restore Enabled: true".

Docker Desktop è un'altra storia.

Su macOS e Windows, aggiornare Docker Desktop interrompe tutti i container in esecuzione. L'intera VM di Docker si riavvia durante il processo di aggiornamento. I tuoi container non si avvieranno automaticamente al termine. Dovrai avviarli manualmente o usare delle policy di riavvio.

Gli aggiornamenti delle immagini richiedono di ricreare i container.

Scaricare una nuova versione dell'immagine non tocca per nulla i container in esecuzione. Se vuoi usare l'immagine aggiornata, devi fermare il vecchio container, rimuoverlo e crearne uno nuovo a partire dall'immagine aggiornata.

Ecco perché è importante capire la differenza tra aggiornamenti dell'Engine e aggiornamenti delle immagini. Uno potrebbe richiedere pianificazione dei tempi di inattività, l'altro no.

Perché dovresti aggiornare Docker

Versioni obsolete di Docker ti espongono a vulnerabilità note e problemi di compatibilità. Se questo da solo non ti convince, continua a leggere.

Sicurezza e stabilità

Ogni release di Docker corregge falle di sicurezza scoperte nelle versioni precedenti.

Usare una versione vecchia significa essere vulnerabili a exploit già noti agli attaccanti. I ricercatori di sicurezza e la community di Docker trovano e segnalano attivamente questi problemi, e l'azienda dietro Docker li risolve nelle release più recenti. Se non aggiorni, lasci la porta aperta.

Inoltre, la stabilità migliora a ogni release. Le correzioni di bug nelle versioni più recenti risolvono seccature comuni e problemi che potrebbero mandare giù i tuoi container in produzione.

Non devi aggiornare ogni volta che esce una nuova versione, ma saltare gli aggiornamenti per mesi significa perdere decine di patch di sicurezza e miglioramenti di stabilità.

Compatibilità con i sistemi moderni

Sistemi operativi e strumenti di sviluppo vanno avanti, che tu aggiorni Docker o no.

Il tuo OS riceve aggiornamenti, i tool di CI/CD aggiungono funzionalità e piattaforme di orchestrazione come Kubernetes alla lunga abbandoneranno il supporto per versioni di Docker più vecchie. Se usi una versione di Docker di due anni fa, inizierai a vedere avvisi di compatibilità, poi errori e infine malfunzionamenti completi.

Anche le immagini moderne si aspettano funzionalità Docker più recenti. I maintainer usano build multi-stage, ottimizzazioni BuildKit e driver di storage più nuovi che le versioni vecchie di Docker non supportano. Potresti scaricare un'immagine che semplicemente non gira sul tuo setup obsoleto.

Se hai in programma di usare strumenti di orchestrazione insieme a Docker, il nostro Introduction to Kubernetes è un ottimo corso per iniziare.

Come controllare la versione attuale di Docker

Prima di aggiornare, è buona pratica verificare la versione in uso.

Verificare la versione installata

Esegui questo comando per vedere la tua versione di Docker:

docker --version

Mostra la versione di Docker Engine installata sul sistema:

Immagine 1 - Comando docker version

Il numero di versione segue il semantic versioning: major.minor.patch. In questo esempio, 29 è la major, 1 la minor e 3 la patch.

Per maggiori dettagli sulla tua configurazione Docker, esegui invece questo comando:

docker info

Immagine 2 - Comando docker info

Mostra una marea di informazioni sulla tua installazione Docker, tra cui la versione del server, il driver di storage, la versione del kernel e se funzionalità come il live restore sono abilitate. Non ti serve tutto per un aggiornamento di base, ma è utile per il troubleshooting.

Decidere se serve un aggiornamento

Gli aggiornamenti di versione minore sono di solito sicuri e andrebbero applicati regolarmente.

Se sei su Docker 29.1.0 e c'è disponibile 29.1.3, è un aggiornamento minore con bugfix e patch di sicurezza. Raramente rompono qualcosa, quindi applicali quando ti è comodo.

Gli aggiornamenti di versione maggiore richiedono più cautela. Passare da Docker 24 a Docker 29 può introdurre breaking change, funzionalità deprecate o nuovi requisiti. Prima di aggiornare tra major, controlla le note di rilascio della versione di destinazione per vedere cosa è cambiato.

Puoi trovare l'ultima versione di Docker sulla documentazione ufficiale o sulla pagina dei rilasci su GitHub. Confrontala con quanto ti mostra docker –version per capire quanto sei indietro.

Come aggiornare Docker Engine

Il processo di aggiornamento dipende dal fatto che tu stia usando Docker Engine su Linux o Docker Desktop su macOS/Windows.

Aggiornare Docker su Linux

Linux usa il gestore pacchetti del sistema per aggiornare Docker Engine.

I comandi esatti variano in base alla distribuzione, ma il processo è lo stesso:

  • Aggiorna l'elenco dei pacchetti
  • Aggiorna Docker

Ecco come funziona su sistemi Ubuntu e Debian-based:

sudo apt update
sudo apt upgrade docker-ce docker-ce-cli containerd.io

Per sistemi basati su Red Hat come CentOS o Fedora, esegui quanto segue:

sudo yum update docker-ce docker-ce-cli containerd.io

Il demone Docker si riavvia automaticamente durante l'aggiornamento.

Se hai il live restore attivo (controlla con docker info), i container in esecuzione continueranno a girare. Altrimenti si fermeranno e dovrai avviarli manualmente.

Al termine, puoi verificare la nuova versione:

docker --version

Se hai installato Docker usando lo script di convenienza invece dei repository, dovrai scaricare ed eseguire di nuovo lo script per aggiornare.

Aggiornare Docker Desktop su macOS e Windows

Docker Desktop gestisce gli aggiornamenti in modo diverso rispetto a Docker Engine su Linux.

L'aggiornamento automatico è attivo per impostazione predefinita. Docker Desktop controlla la disponibilità di aggiornamenti all'avvio e mostra una notifica quando è disponibile una nuova versione. Clicca sulla notifica e Docker Desktop scaricherà e installerà l'aggiornamento per te.

Se preferisci aggiornare manualmente, apri le impostazioni di Docker Desktop e cerca l'opzione "Check for updates". Qui puoi disattivare gli aggiornamenti automatici e controllare manualmente quando vuoi.

Immagine 3 - Aggiornare tramite Docker Desktop

Va bene anche aggiornare Docker manualmente.

Basta scaricare l'installer più recente di Docker Desktop dal sito di Docker ed eseguirlo. L'installer rileverà l'installazione esistente e la aggiornerà senza rimuovere immagini o container.

Ricorda solo che Docker Desktop fermerà tutti i container durante l'aggiornamento. L'intera VM di Docker si riavvia, quindi pianifica un paio di minuti di inattività. I container non si riavvieranno automaticamente a meno che tu non li abbia configurati con policy come --restart always.

Dopo l'aggiornamento, apri Docker Desktop e lascialo avviare completamente prima di eseguire docker –version per confermare la nuova versione.

Gestire manualmente più container non è una medaglia al merito. Dai un'occhiata alla nostra Guida a Docker Compose per imparare a gestire build multi-container.

Come verificare l'aggiornamento di Docker

Docker ora dovrebbe essere aggiornato, ma verifichiamo che sia davvero così.

Confermare la versione installata

Controlla prima il numero di versione:

docker --version

L'output dovrebbe mostrare la versione di destinazione. Se mostra ancora la versione precedente, l'aggiornamento non è andato a buon fine oppure devi riavviare il terminale per caricare i nuovi binari.

La versione è rimasta invariata sul mio computer, ma solo perché ero già all'ultima versione.

Il passo successivo è controllare lo stato del demone Docker:

docker info

Se fallisce con "Cannot connect to the Docker daemon", il demone non è in esecuzione. Su Linux, riavvialo con il seguente comando:

sudo systemctl restart docker

Su macOS e Windows, apri semplicemente Docker Desktop e attendi l'avvio.

Scopri i comandi essenziali per il lavoro quotidiano con i container nel nostro recente articolo sui 18 migliori comandi Docker.

Eseguire un container di test

Per verificare che dopo l'aggiornamento non si sia rotto nulla, prova a scaricare ed eseguire un container semplice:

docker run hello-world

Questo comando scarica la piccola immagine hello-world e la esegue. Vedrai un messaggio che spiega che Docker funziona correttamente:

Come aggiornare le immagini Docker dopo un aggiornamento dell'Engine

Aggiornare Docker Engine non aggiorna le immagini dei tuoi container: quelle vanno gestite a parte.

Scaricare versioni più recenti delle immagini

Puoi eseguire il comando docker pull per ottenere la versione più recente di un'immagine:

docker pull postgres

Questo scarica la versione più nuova dell'immagine di PostgreSQL con il tag latest. Ma non significa sempre quello che pensi: è solo un tag che i maintainer possono puntare a qualsiasi versione vogliano.

È sempre consigliabile essere espliciti con i tag per evitare sorprese:

docker pull postgres:18

Immagine 5 - Scaricare nuove immagini

Questo scarica specificamente PostgreSQL versione 18. Se esce la 18.1, rieseguire questo comando scaricherà l'immagine 18.1 rimanendo però nella serie 18.

Per altre immagini, controlla prima le versioni correnti con il comando docker images. Poi scarica le versioni più nuove secondo necessità. I container esistenti continueranno a usare la vecchia immagine finché non li ricrei con quella nuova.

Ricostruire immagini personalizzate

Se crei immagini personalizzate con Dockerfile, devi ricostruirle dopo aver scaricato gli aggiornamenti dell'immagine di base.

Supponiamo che il tuo Dockerfile inizi con FROM python:3.14. Anche se scarichi l'ultima python:3.14, la tua immagine personalizzata usa ancora i layer in cache. Ricostruiscila per includere gli aggiornamenti:

docker build --no-cache -t myapp:latest .

Questo ignora tutti i layer in cache e ricostruisce tutto da zero. È più lento ma garantisce l'uso delle immagini base e dipendenze più aggiornate.

Dopo la ricostruzione, ferma i vecchi container e avviane di nuovi con l'immagine aggiornata: gli aggiornamenti non si applicano automaticamente ai container in esecuzione.

Hai bisogno di liberare spazio su disco dopo l'aggiornamento? Il nostro tutorial su Docker Prune ti mostra come pulire in sicurezza immagini e container inutilizzati.

Problemi comuni con gli aggiornamenti di Docker

Gli aggiornamenti di Docker falliscono in modi prevedibili, e la maggior parte dei problemi ha soluzioni rapide. Te ne mostro un paio che ho incontrato personalmente.

Errori di permessi, servizio e installazione

Gli errori "Permission denied" indicano che il tuo utente non può accedere alla socket di Docker.

Su Linux, aggiungi il tuo utente al gruppo docker:

sudo usermod -aG docker $USER

Esci e rientra perché la modifica abbia effetto. Dopo non dovresti aver bisogno di sudo per i comandi docker.

Gli errori "Cannot connect to the Docker daemon" significano che Docker non è in esecuzione.

Controlla lo stato del servizio:

sudo systemctl status docker

Se è fermo o in errore, avvialo:

sudo systemctl start docker

Se non parte, controlla i log con journalctl -u docker per capire cosa non va.

Su macOS e Windows, avvia semplicemente l'app Docker Desktop.

Conflitti di pacchetti durante l'installazione si verificano quando vecchi pacchetti Docker interferiscono con quelli nuovi.

Puoi eseguire questo comando per rimuovere i pacchetti Docker vecchi prima di installare la versione aggiornata:

sudo apt remove docker docker-engine docker.io containerd runc

Poi reinstalla Docker seguendo le istruzioni ufficiali di installazione per la tua distribuzione.

Eseguire il rollback o il downgrade di Docker

Se l'aggiornamento rompe la tua configurazione, puoi tornare a una versione precedente.

Su Linux, trova le versioni disponibili nel gestore pacchetti:

apt list -a docker-ce

Installa una versione specifica più vecchia:

sudo apt install <specific-version>

Sostituisci il tag con la versione di cui hai bisogno. I tuoi container e le tue immagini restano intatti durante il downgrade.

Su macOS e Windows, il rollback è più semplice. Scarica l'installer precedente dall'archivio dei rilasci di Docker ed eseguilo. L'installer sostituisce la versione corrente con quella più vecchia senza toccare container o immagini.

Best practice per l'aggiornamento di Docker

Il miglior consiglio è mantenere Docker aggiornato regolarmente. Se non lo fai da anni, cerca nelle pagine dei rilasci eventuali breaking change.

Mantenere Docker aggiornato in sicurezza

Imposta un promemoria per controllare gli aggiornamenti di Docker invece di aspettare che compaiano problemi.

Controlla gli aggiornamenti ogni mese: non perché devi installarli tutti, ma perché devi sapere cosa è disponibile. E ti serve qualcosa che te lo ricordi. Le patch di sicurezza contano più degli aggiornamenti di funzionalità, quindi dalle priorità quando escono.

Una buona pratica è documentare la configurazione attuale prima di aggiornare. Annota la versione di Docker, elenca i container in esecuzione con docker ps e prendi nota di eventuali configurazioni personalizzate. Se qualcosa si rompe, saprai esattamente cosa è cambiato.

Se usi Docker in produzione, testa prima gli aggiornamenti su una macchina di sviluppo. Allestisci un ambiente simile, aggiorna Docker lì e assicurati che i container funzionino ancora prima di toccare la produzione.

Quando automatizzare gli aggiornamenti

L'automazione ha senso per ambienti di sviluppo dove i tempi di inattività non sono un problema.

Puoi configurare Docker Desktop per l'auto-update o impostare aggiornamenti non presidiati su Linux per le patch di sicurezza. Funziona bene per macchine di sviluppo locali in cui un riavvio non interrompe servizi critici.

Non automatizzare gli aggiornamenti in produzione senza le dovute cautele.

Servono monitoraggio, strategie di rollback e test prima di applicare aggiornamenti a sistemi che gestiscono carichi reali. Gli aggiornamenti di Docker possono rompere qualcosa: in produzione vuoi una persona nel loop.

Gli aggiornamenti manuali con promemoria mensili sono il mio metodo preferito, e non ho mai avuto problemi.

Conclusione

Aggiornare Docker parte dal capire cosa stai davvero aggiornando.

Gli aggiornamenti di Docker Engine, di Docker Desktop e delle immagini sono tre cose diverse con impatti diversi sul sistema. Sapere quale ti serve, seguire il processo giusto per la tua piattaforma e testare dopo. Tutto qui.

Imposta un promemoria sul telefono. Controlla gli aggiornamenti ogni mese, dai priorità alle patch di sicurezza e documenta cosa stai eseguendo prima di cambiare qualcosa. Gli aggiornamenti non dovrebbero essere fonte di stress: dovrebbero essere una normale attività di manutenzione.

Per gli ambienti di produzione, ricorda che i tuoi container dipendono dal corretto funzionamento di Docker. Tratta gli aggiornamenti con la stessa cura che daresti a qualsiasi altro cambiamento di infrastruttura critica: con deliberazione, con test e con un piano di rollback se qualcosa va storto.

Ora sai come aggiornare Docker: il passo successivo è fare un salto di qualità con le nostre competenze sui container con il corso Intermediate Docker. Imparerai tutto su networking, immagini avanzate e Docker Compose.

Dario Radečić

Autore

Dario Radečić

Senior Data Scientist con base in Croazia. Top Tech Writer con oltre 700 articoli pubblicati, per più di 10 milioni di visualizzazioni. Autore del libro Machine Learning Automation with TPOT.

FAQs

Come posso automatizzare gli aggiornamenti dei container Docker con Watchtower?

Watchtower è un container che monitora i container in esecuzione e li aggiorna automaticamente quando sono disponibili nuove versioni delle immagini. Esegui Watchtower come container con accesso alla socket di Docker: verifica periodicamente la presenza di aggiornamenti, scarica le nuove versioni e riavvia i container con le immagini aggiornate. Funziona bene negli ambienti di sviluppo, ma usa cautela in produzione: gli aggiornamenti automatici possono rompere qualcosa senza test e strategie di rollback adeguati.

Quali sono le best practice per configurare un registry Docker privato?

Proteggi il tuo registry privato con certificati TLS e autenticazione per prevenire accessi non autorizzati. Usa backend di storage come S3 o Azure Blob Storage per scalabilità e affidabilità invece del disco locale. Implementa la scansione delle immagini per le vulnerabilità e configura la garbage collection per rimuovere i layer inutilizzati e risparmiare spazio. Configura anche controlli di accesso in modo che i team possano fare push e pull solo dai repository per cui sono autorizzati.

In cosa differisce un deployment canary da un deployment blue-green?

Il deployment blue-green esegue due ambienti di produzione identici: distribuisci la nuova versione nell'ambiente inattivo, la testi e poi sposti tutto il traffico in una volta. Il deployment canary distribuisce gradualmente la nuova versione a un piccolo sottoinsieme di utenti, monitora eventuali problemi e aumenta lentamente il traffico verso la nuova versione mentre la vecchia gestisce ancora la maggior parte delle richieste. I canary intercettano i problemi con minore impatto sugli utenti, mentre i blue-green offrono rollback istantaneo tornando all'ambiente precedente.

Quali sono i vantaggi di usare build multi-stage in Docker?

Le build multi-stage ti permettono di usare più istruzioni FROM in un unico Dockerfile, così puoi compilare o costruire l'applicazione in uno stage con tutti gli strumenti di build e poi copiare solo gli artefatti finali in un'immagine runtime minimale. Questo riduce drasticamente la dimensione dell'immagine perché non distribuisci dipendenze di build, compilatori o codice sorgente in produzione. Ottieni anche build più veloci grazie a un caching dei layer migliore e una separazione più pulita tra ambiente di build e di runtime.

Come posso monitorare efficacemente le metriche di performance dei container Docker?

Usa docker stats per metriche in tempo reale su CPU, memoria, rete e I/O disco per tutti i container in esecuzione. Per il monitoraggio in produzione, strumenti come Prometheus con cAdvisor raccolgono metriche dettagliate dei container e le archiviano per analisi e alerting. Docker espone anche metriche tramite la sua API che puoi acquisire con piattaforme di monitoraggio. Imposta avvisi per uso elevato di risorse, riavvii di container e health check falliti per intercettare i problemi prima che impattino gli utenti.

Argomenti

Correlato