Installa Docker su Debian: guida completa all’installazione
Questa guida copre quattro approcci d’installazione, dal repository ufficiale di Docker all’installazione manuale dei pacchetti, più la configurazione post‑installazione essenziale per deployment enterprise. Imparerai a mettere in sicurezza l’ambiente Docker, risolvere i problemi comuni e mantenere una configurazione pronta per la produzione.
Installare Docker su Debian non dovrebbe significare indovinare quale metodo non manderà in crisi il sistema.
La maggior parte delle guide propone più opzioni d’installazione senza spiegare quando usare ciascuna. Finisci con pacchetti obsoleti dal repository di Debian o, peggio, con errori di permessi che ti bloccano dai tuoi stessi container. Risultato? Passi ore a fare troubleshooting invece di distribuire applicazioni.
Il ciclo di rilascio prevedibile di Debian e la sua stabilità granitica lo rendono perfetto per deployment Docker in produzione. Ottieni prestazioni dei container costanti senza aggiornamenti imprevisti del sistema che rompano la configurazione. In teoria, non dovresti avere problemi dopo la parte più delicata: l’installazione.
In questo tutorial ti guiderò attraverso quattro metodi di installazione, hardening di sicurezza essenziale, configurazione dello storage e passaggi di troubleshooting per far funzionare Docker in modo affidabile su Debian.
Docker gira sulla maggior parte dei sistemi Debian moderni, ma prima dovrai spuntare alcune caselle. In questa sezione ti mostro i requisiti esatti di sistema prima di iniziare l’installazione.
Debian 10 (Buster) o più recente è richiesto per le versioni attuali di Docker. Rilasci più vecchi come Debian 9 non funzionano con build recenti di Docker Engine. La versione del kernel dovrebbe essere 3.10 o superiore: la maggior parte delle installazioni Debian degli ultimi anni soddisfa automaticamente questo requisito.
Ti servono accesso root o privilegi sudo per installare i pacchetti Docker e configurare il sistema. Docker richiede anche questi pacchetti base: apt-transport-https, ca-certificates, curl e gnupg. La maggior parte dei sistemi Debian li ha già installati, ma verificherai questo passaggio più avanti.
I requisiti hardware sono minimi:
2GB di RAM per gestire carichi base dei container, anche se 4GB o più funzionano meglio per ambienti di sviluppo
10GB di spazio libero su disco è il minimo per immagini Docker e dati dei container. Le configurazioni di produzione dovrebbero prevederne molto di più.
Se usi l’ambiente desktop GNOME, assicurati di avere installato il pacchetto gnome-terminal. Alcuni strumenti di gestione Docker lo richiedono per le sessioni interattive dei container.
Rimuovi eventuali vecchie installazioni di Docker prima di iniziare. Pacchetti legacy come docker, docker.io o docker-engine possono entrare in conflitto con l’attuale Docker Engine. Esegui questo comando per pulire le versioni precedenti:
sudoapt remove docker docker-engine docker.io containerd runcOfferto da
Il firewall e la configurazione di rete possono influire sul networking dei container. Docker crea proprie interfacce di rete e regole iptables. Se usi UFW o regole firewall personalizzate, potresti doverle adeguare dopo l’installazione per consentire il traffico dei container.
Verifica questi requisiti ora: ti farà risparmiare tempo di troubleshooting più tardi.
Metodi di installazione
Hai quattro modi per installare Docker su Debian, ognuno con compromessi diversi. Ti aiuterò a scegliere il metodo più adatto al tuo ambiente e ai requisiti di sicurezza.
Cerchi invece le istruzioni per Ubuntu? Abbiamo una guida completa passo passo per installare Docker su Ubuntu.
Metodo 1: Repository ufficiale di Docker (consigliato)
Questo metodo ti fornisce l’ultima versione di Docker con aggiornamenti di sicurezza regolari.
Il repository ufficiale di Docker ha sempre le release stabili più recenti e ricevi aggiornamenti automatici tramite il gestore pacchetti. Non rimarrai bloccato con versioni obsolete che mancano di patch di sicurezza importanti o nuove funzionalità.
Inizia aggiornando il sistema e installando i pacchetti richiesti da Docker:
sudoapt update
sudoaptinstall apt-transport-https ca-certificates curl gnupg lsb-releaseOfferto da
Poi aggiungi la chiave GPG ufficiale di Docker per verificare l’autenticità dei pacchetti:
curl-fsSL https://download.docker.com/linux/debian/gpg |sudo gpg --dearmor-o /usr/share/keyrings/docker-archive-keyring.gpgOfferto da
Configura il repository aggiungendolo alla lista delle sorgenti:
sudoapt update
sudoaptinstall docker-ce docker-ce-cli containerd.io docker-compose-pluginOfferto da
Questo ti dà tutto il necessario per deployment Docker in produzione.
Metodo 2: Repository predefinito di Debian
Questo approccio installa Docker con un solo comando, ma otterrai una versione più vecchia.
Il repository predefinito di Debian rende l’installazione semplice: esegui sudo apt install docker.io. Ma c’è un problema: spesso otterrai versioni di Docker indietro di mesi o anni rispetto al rilascio corrente.
Questo metodo va bene per test di base o quando ti serve una versione specifica più vecchia per compatibilità. Ma perderai aggiornamenti di sicurezza, miglioramenti delle prestazioni e nuove funzionalità delle release recenti.
Usa questo metodo solo quando il repository ufficiale non è un’opzione.
Metodo 3: Installazione manuale dei pacchetti DEB
Ti mostro come scaricare e installare i pacchetti direttamente quando non puoi accedere ai repository.
Questo metodo funziona per sistemi air‑gapped, reti aziendali con accesso internet limitato, o quando devi installare la stessa versione di Docker su più macchine senza scaricare ogni volta.
Scarica i pacchetti DEB dal sito di Docker:
Vai su https://download.docker.com/linux/debian/dists/
Scegli la tua versione di Debian (bullseye, bookworm, ecc.)
Vai su pool/stable/amd64/
Scarica questi pacchetti: docker-ce_*.deb, docker-ce-cli_*.deb e containerd.io_*.deb
Se ottieni errori di dipendenze, esegui sudo apt-get install -f per risolverli.
Questo metodo richiede più lavoro manuale per gli aggiornamenti, ma ti dà il controllo completo sulla versione da installare.
Metodo 4: Script di convenienza
L’ultimo metodo che tratto offre un’installazione rapida per ambienti di test, ma dovresti prima verificare lo script.
Docker fornisce script d’installazione che rilevano il tuo sistema e installano Docker automaticamente. Sono comodi per avviare velocemente ambienti di test o quando devi configurare Docker su più sistemi.
curl-fsSL https://get.docker.com -o get-docker.shOfferto da
Non usare gli script di convenienza in produzione. Sono pensati per una configurazione rapida, non per deployment sicuri e riproducibili. Per i sistemi critici resta sul metodo del repository ufficiale.
Consiglio di scegliere il metodo del repository ufficiale a meno che tu non abbia vincoli specifici che richiedano un approccio diverso.
Verifica dell’installazione
L’installazione è solo il primo passo: devi confermare che Docker funzioni davvero prima di distribuire qualsiasi cosa. Questi test rapidi ti diranno se la tua configurazione Docker è pronta per carichi reali.
Controlla la versione di Docker per confermare che l’installazione sia completata:
Dovresti vedere un output tipo Docker version xx.x.x, build x. Se ottieni un errore "command not found", Docker non è stato installato correttamente o non è nel tuo PATH.
Ottieni informazioni dettagliate sulla build per vedere quali componenti stanno girando:
Questo mostra versioni separate di client e server, più dettagli sull’architettura. La sezione server conferma che il demone Docker è in esecuzione ed è accessibile.
Esegui un container di test per validare che tutto funzioni end-to-end:
Docker scaricherà l’immagine hello-world ed eseguirà il container. Se tutto funziona correttamente, vedrai un messaggio che spiega come funzionano i container Docker. Questo test conferma che Docker può scaricare immagini, creare container ed eseguire comandi.
Puoi verificare che Docker Compose sia installato e funzionante:
Dovresti vedere un output tipo Docker Compose version vX.xx.x. Nota che le installazioni più recenti usano docker compose (con spazio) invece del vecchio comando docker-compose.
Se tutti questi comandi funzionano senza errori, la tua installazione Docker è pronta per l’uso in produzione.
Docker funziona subito, ma vorrai configurare alcune cose per l’uso quotidiano. In questa sezione tratto la gestione del servizio e i permessi utente che rendono Docker più comodo e sicuro.
Gestione del servizio
Puoi controllare quando Docker gira con questi comandi systemd:
sudo systemctl start docker# Avvia Dockersudo systemctl stop docker# Ferma Dockersudo systemctl restart docker# Riavvia il servizio DockerOfferto da
Per abilitare l’avvio automatico di Docker all’avvio del sistema, esegui:
Vedrai se il servizio è attivo, da quanto tempo è in esecuzione e gli ultimi messaggi di log. Se Docker non funziona, questo comando di solito mostra il motivo.
Per risolvere problemi del servizio, controlla i log:
In alternativa, riavvia la sessione del terminale. Puoi anche eseguire newgrp docker per attivare il gruppo nella sessione corrente senza disconnetterti.
Infine, per testare l’accesso non root, esegui questo comando Docker:
Ecco però il compromesso in termini di sicurezza: gli utenti nel gruppo docker hanno accesso equivalente a root sul sistema. Possono montare directory dell’host, accedere a file sensibili e potenzialmente evadere dai container per compromettere l’host.
Aggiungi solo utenti fidati al gruppo docker e non farlo mai su sistemi condivisi in cui non controlli tutti gli utenti.
Configura queste impostazioni una volta e lavorare con Docker ogni giorno diventa molto più semplice.
Configurazione del driver di storage
Il driver di storage di Docker gestisce come immagini e dati dei container vengono archiviati sul sistema. La maggior parte degli utenti non deve mai cambiarlo, ma capire le opzioni aiuta a ottimizzare le prestazioni per carichi specifici.
Docker seleziona automaticamente il driver di storage migliore per il tuo sistema durante l’installazione. Su Debian, di solito è overlay2, che offre ottime prestazioni e stabilità nella maggior parte dei casi.
Controlla il driver di storage attuale con questo comando:
Gestisce velocemente le operazioni copy‑on‑write quando i container modificano i file
Condivide i layer tra immagini per risparmiare spazio su disco
Supporta tutte le funzionalità di Docker senza problemi di compatibilità
Funziona in modo affidabile su diversi tipi di filesystem
Potresti aver bisogno di un driver diverso se esegui carichi specializzati o hai requisiti specifici di filesystem.
Per esempio, alcuni sistemi di storage enterprise funzionano meglio con il driver devicemapper, oppure potresti aver bisogno di vfs per fare debugging di problemi del filesystem dei container.
Puoi cambiare il driver di storage modificando la configurazione del demone di Docker:
Attenzione: cambiare driver di storage rende inaccessibili i container e le immagini esistenti. Esegui prima il backup dei dati importanti o esporta i container che vuoi conservare.
Ora puoi testare il nuovo driver scaricando un’immagine ed eseguendo un container:
docker pull hello-world
docker run hello-worldOfferto da
In poche parole, resta con overlay2 a meno che tu non abbia requisiti specifici che impongano un driver diverso.
Hardening della sicurezza
Le installazioni Docker predefinite vanno bene per lo sviluppo, ma gli ambienti di produzione richiedono ulteriori livelli di sicurezza. Queste configurazioni proteggono l’host da evasioni dei container e attacchi di esaurimento risorse.
Integrazione SELinux/AppArmor
I controlli di accesso obbligatori aggiungono un livello di sicurezza che limita ciò che i container possono fare, anche se compromessi. Senza questi controlli, un container che gira come root può potenzialmente accedere a risorse dell’host che non dovrebbe toccare.
Puoi abilitare AppArmor per Docker, il framework di sicurezza predefinito su Debian, eseguendo questi comandi:
Una volta che AppArmor è in esecuzione, carica il profilo di sicurezza di Docker:
sudo apparmor_parser -r /etc/apparmor.d/dockerOfferto da
Ora puoi eseguire container con la protezione AppArmor abilitata:
docker run --security-opt apparmor=docker-default nginxOfferto da
Il profilo docker-default limita capacità del container come il montaggio di filesystem, l’accesso a interfacce di rete raw e il caricamento di moduli del kernel.
Per sistemi SELinux (se lo usi al posto di AppArmor), abilita prima la gestione dei container:
sudo setsebool -P container_manage_cgroup onOfferto da
Poi esegui i container con etichette SELinux:
docker run --security-opt label=type:container_t nginxOfferto da
Questi controlli bloccano molte tecniche comuni di evasione dai container e limitano i danni di container compromessi.
Configurazione del demone
Puoi (e dovresti) personalizzare le impostazioni del demone Docker per ridurre la superficie d’attacco e migliorare la postura di sicurezza. Crea o modifica il file /etc/docker/daemon.json:
{"live-restore":true,"userland-proxy":false,"no-new-privileges":true,"icc":false,"disable-legacy-registry":true}Offerto da
Ecco cosa fa ogni impostazione:
live-restore: true mantiene i container in esecuzione se il demone Docker si arresta in modo anomalo
userland-proxy: false usa direttamente iptables invece del proxy in userland per prestazioni migliori
no-new-privileges: true impedisce ai container di acquisire nuovi privilegi
icc: false disabilita la comunicazione tra container per impostazione predefinita disable-legacy-registry: true blocca l’accesso a protocolli di registry vecchi e insicuri
Dopo aver apportato le modifiche, riavvia Docker per applicarle:
Questo limita ciò che i container compromessi possono fare al tuo sistema.
Limiti di risorse con control group (cgroups)
I container senza limiti di risorse possono consumare tutta la CPU, la memoria e l’I/O disponibili, mandando giù l’intero host. I control group (cgroups) evitano questo imponendo limiti rigidi sull’uso delle risorse.
Inizia con i limiti di memoria per evitare che i container usino RAM eccessiva:
Anche con un’installazione corretta, Docker può incappare in intoppi che impediscono ai container di funzionare. Ecco i problemi più comuni e come risolverli rapidamente.
Errori di permessi
La maggior parte dei problemi di permessi in Docker dipende dal fatto che il tuo utente non ha accesso al file socket di Docker. Quando vedi Got permission denied while trying to connect to the Docker daemon socket, significa che non sei ancora nel gruppo docker.
Succede perché Docker gira come root, ma crea un socket accessibile ai membri del gruppo docker. Aggiungiti al gruppo:
Gli errori di permessi sui file all’interno dei container sono diversi ma altrettanto comuni. Accadono quando il processo del container non può leggere o scrivere file montati dall’host. Il container potrebbe girare con un ID utente diverso da quello proprietario dei tuoi file.
La maggior parte dei container Docker gira come ID utente 1000 per impostazione predefinita. Se i file sono di root o di un altro utente, cambia la proprietà:
sudochown-R1000:1000 /path/to/your/filesOfferto da
Se usi SELinux (invece di AppArmor), potresti vedere negazioni di permessi diverse che compaiono nei log di audit. Queste sono più complesse perché SELinux controlla l’accesso in base ai contesti di sicurezza, non solo agli ID utente.
Correggi i contesti SELinux abilitando la gestione dei container e ripristinando le etichette corrette sui volumi Docker:
sudo setsebool -P container_manage_cgroup on
sudo restorecon -R /path/to/your/volumeOfferto da
Errori del servizio
Quando Docker non si avvia o continua a crashare, devi capire cosa fallisce prima di poterlo risolvere. Lo stato del servizio systemd ti dà una panoramica rapida:
Questo mostra se Docker è in esecuzione e eventuali messaggi di errore recenti. Ma per un troubleshooting dettagliato, è meglio osservare i log in tempo reale mentre Docker prova ad avviarsi:
Un errore di avvio comune si verifica quando Docker non si è arrestato correttamente. Vedrai un errore tipo "failed to start daemon: pid file found, ensure docker is not running." Significa che c’è un file di processo residuo che confonde lo script di avvio.
Rimuovi il file obsoleto e prova a riavviare:
sudorm /var/run/docker.pid
sudo systemctl start dockerOfferto da
Problemi di storage sono un’altra causa frequente di errori del demone. Docker archivia tutti i suoi dati in /var/lib/docker e, se questa directory esaurisce lo spazio o si corrompe, Docker non può avviarsi correttamente.
Conflitti di rete possono anche impedire l’avvio di Docker. Succede quando la rete bridge predefinita di Docker (di solito 172.17.0.0/16) va in conflitto con la tua configurazione di rete esistente. Vedrai errori su intervalli di indirizzi non disponibili.
Risolvi configurando un IP bridge personalizzato che non vada in conflitto con la tua rete. Modifica /etc/docker/daemon.json:
Docker dipende dalle funzionalità del kernel Linux per containerizzazione, networking e sicurezza. Se il kernel è troppo vecchio, avrai problemi che non si possono risolvere senza aggiornare.
Controlla la versione del kernel in uso con questo comando:
Docker richiede almeno il kernel 3.10 per la funzionalità di base, ma per la produzione è meglio 4.0 o più recente. Qualsiasi versione precedente alla 3.10 semplicemente non funziona con le versioni moderne di Docker.
Aggiornare il kernel su Debian è semplice: installa il pacchetto del kernel più recente:
sudoapt update
sudoaptinstall linux-image-amd64Offerto da
Il nuovo kernel non sarà attivo finché non riavvii il sistema:
A volte il kernel è abbastanza recente, ma alcuni moduli non sono caricati. Docker ha bisogno di moduli specifici per funzionalità di rete e containerizzazione. Vedrai errori su interfacce di rete non disponibili o container che non si avviano correttamente.
Carica manualmente i moduli essenziali:
sudo modprobe bridge
sudo modprobe ip_tables
sudo modprobe iptable_natOfferto da
Questi moduli dovrebbero caricarsi automaticamente, ma se non succede, rendili permanenti aggiungendoli alla configurazione di sistema:
echo"bridge"|sudotee-a /etc/modules
echo"ip_tables"|sudotee-a /etc/modules
echo"iptable_nat"|sudotee-a /etc/modulesOfferto da
Anche con un kernel recente, potresti incontrare errori del runtime dei container che dicono "operation not supported". Di solito significa che il kernel è stato compilato senza alcune funzionalità che Docker si aspetta. Purtroppo non c’è una soluzione alternativa per funzionalità del kernel mancanti: serve un kernel configurato correttamente.
La maggior parte dei problemi d’installazione di Docker ricade in tre aree: permessi utente, configurazione del servizio o compatibilità del kernel. Risolvi la causa alla radice invece di aggirare i sintomi e il tuo ambiente Docker sarà molto più stabile.
A volte hai bisogno di rimuovere completamente Docker dal sistema, che tu stia passando a un runtime di container diverso o ripartendo da zero dopo problemi di configurazione.
Questo processo va oltre la semplice rimozione dei pacchetti: vorrai anche pulire dati e modifiche di sistema.
Inizia rimuovendo tutti i pacchetti Docker dal sistema. Il comando esatto dipende da come hai installato Docker in origine.
Se hai installato dal repository ufficiale di Docker:
sudoapt purge docker-ce docker-ce-cli containerd.io docker-compose-pluginOfferto da
Se hai installato dal repository predefinito di Debian:
Poi, elimina la directory dati di Docker se vuoi rimuovere tutte le immagini, i container e i volumi. Questo passaggio è opzionale ma consigliato per una pulizia completa.
Docker memorizza tutto in /var/lib/docker per impostazione predefinita. Rimuovere questa directory elimina definitivamente tutti i container, le immagini, le reti e i volumi:
Continua pulendo gruppi e utenti di sistema creati da Docker durante l’installazione. Docker aggiunge un gruppo docker al sistema e potrebbe aver modificato i permessi utente.
Se hai aggiunto utenti al gruppo docker, la loro appartenenza verrà pulita automaticamente quando elimini il gruppo. Puoi anche rimuovere manualmente singoli utenti dal gruppo prima di eliminarlo:
Ora hai Docker in esecuzione su Debian, ma l’installazione è solo l’inizio. Il modo in cui configuri e mantieni il tuo ambiente Docker determina se avrai un’esperienza di produzione fluida o se passerai le notti a fare troubleshooting dei container.
Scegli il metodo d’installazione in base ai tuoi vincoli. Il repository ufficiale di Docker è la scelta migliore per la maggior parte degli ambienti di produzione perché ottieni le ultime funzionalità e patch di sicurezza. Ma reti air‑gapped o requisiti di coerenza di versione possono richiedere l’installazione manuale dei DEB.
Metti subito in sicurezza il tuo ambiente Docker. Abilita AppArmor o SELinux per controlli di accesso obbligatori, configura impostazioni restrittive del demone e usa i cgroups per limitare le risorse dei container. Mantieni Docker aggiornato con update di sicurezza automatici, ma testali prima in staging.
Usa Docker Compose per applicazioni multi‑container. Invece di gestire complessi comandi docker run, definisci lo stack applicativo in YAML.
Monitora l’uso del disco e pulisci regolarmente. Esegui docker system prune per rimuovere le immagini inutilizzate e imposta la rotazione dei log per evitare che i container riempiano il disco.
Quando ti serve più dettaglio, la documentazione ufficiale copre argomenti avanzati che questa guida non tratta. Consulta la documentazione Docker per approfondimenti su networking, storage driver e orchestration. La documentazione del pacchetto Debian Docker spiega le configurazioni specifiche del pacchetto e i problemi noti.
Docker su Debian ti offre una piattaforma stabile e potente per applicazioni containerizzate, ma solo se lo configuri con attenzione e lo mantieni con costanza.
Vuoi saperne di più su Docker, la containerizzazione e il suo impiego in data science e machine learning? Questi corsi DataCamp sono il passo successivo ideale:
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
Qual è il modo migliore per installare Docker su Debian per l’uso in produzione?⌄
Il metodo del repository ufficiale di Docker è la scelta migliore per gli ambienti di produzione perché fornisce le ultime release stabili con aggiornamenti di sicurezza regolari. Questo metodo assicura di ottenere tutte le funzionalità più recenti e le patch critiche che potrebbero non essere disponibili nei repository predefiniti di Debian. Inoltre, beneficerai degli aggiornamenti automatici tramite il gestore pacchetti, mantenendo la tua installazione di Docker sicura senza interventi manuali.
Devo preoccuparmi della sicurezza quando eseguo Docker su Debian?⌄
Sì, la sicurezza di Docker richiede una configurazione attenta oltre l’installazione di base. I container condividono il kernel dell’host, quindi un container compromesso potrebbe potenzialmente accedere a risorse dell’host se non correttamente isolato. Dovresti abilitare AppArmor o SELinux per controlli di accesso obbligatori, configurare limiti di risorse con i cgroups ed eseguire i container come utenti non root quando possibile. Inoltre, mantieni Docker aggiornato ed evita di aggiungere utenti al gruppo docker se non strettamente necessario, poiché ciò concede accesso al sistema equivalente a root.
Posso eseguire Docker su versioni più vecchie di Debian?⌄
Docker richiede Debian 10 (Buster) o più recente per funzionare con le versioni attuali di Docker Engine. I rilasci più vecchi come Debian 9 mancano delle funzionalità del kernel e delle dipendenze dei pacchetti necessarie a Docker moderno. Se sei bloccato su una versione Debian più vecchia, dovrai prima aggiornare il sistema, perché non esiste una soluzione affidabile per le funzionalità del kernel mancanti da cui Docker dipende per containerizzazione e networking.
Perché Docker non si avvia dopo l’installazione e come risolvo i problemi del demone?⌄
I malfunzionamenti del demone Docker derivano di solito da tre cause principali: problemi di storage, conflitti di rete o file di processo residui da installazioni precedenti. Verifica che /var/lib/docker abbia spazio su disco sufficiente usando df -h /var/lib/docker e, se serve, pulisci con docker system prune -a. Per i conflitti di rete, l’IP della bridge predefinita di Docker (172.17.0.0/16) può scontrarsi con la tua rete esistente: configura un IP bridge personalizzato in /etc/docker/daemon.json. Se vedi errori "pid file found", rimuovi il file obsoleto con sudo rm /var/run/docker.pid e riavvia il servizio.
Come rimuovo correttamente Docker e tutti i suoi dati dal mio sistema Debian?⌄
La rimozione completa di Docker richiede più della semplice disinstallazione dei pacchetti: devi pulire directory dati, gruppi di sistema e file di servizio. Inizia eliminando i pacchetti con sudo apt purge docker-ce docker-ce-cli containerd.io docker-compose-plugin, poi rimuovi la directory dei dati con sudo rm -rf /var/lib/docker (elimina definitivamente tutti i container e le immagini). Cancella il gruppo docker con sudo groupdel docker, rimuovi i file di servizio systemd e verifica eventuali processi rimasti con ps aux | grep docker. Così garantisci una pulizia completa se devi reinstallare o passare a un altro runtime di container.
Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Installare Docker su Debian non dovrebbe significare indovinare quale metodo non manderà in crisi il sistema.
La maggior parte delle guide propone più opzioni d’installazione senza spiegare quando usare ciascuna. Finisci con pacchetti obsoleti dal repository di Debian o, peggio, con errori di permessi che ti bloccano dai tuoi stessi container. Risultato? Passi ore a fare troubleshooting invece di distribuire applicazioni.
Il ciclo di rilascio prevedibile di Debian e la sua stabilità granitica lo rendono perfetto per deployment Docker in produzione. Ottieni prestazioni dei container costanti senza aggiornamenti imprevisti del sistema che rompano la configurazione. In teoria, non dovresti avere problemi dopo la parte più delicata: l’installazione.
In questo tutorial ti guiderò attraverso quattro metodi di installazione, hardening di sicurezza essenziale, configurazione dello storage e passaggi di troubleshooting per far funzionare Docker in modo affidabile su Debian.
Completamente nuovo a Docker? Inizia dalle basi di Docker prima di passare ai passaggi d’installazione.
Prerequisiti di sistema
Docker gira sulla maggior parte dei sistemi Debian moderni, ma prima dovrai spuntare alcune caselle. In questa sezione ti mostro i requisiti esatti di sistema prima di iniziare l’installazione.
Debian 10 (Buster) o più recente è richiesto per le versioni attuali di Docker. Rilasci più vecchi come Debian 9 non funzionano con build recenti di Docker Engine. La versione del kernel dovrebbe essere 3.10 o superiore: la maggior parte delle installazioni Debian degli ultimi anni soddisfa automaticamente questo requisito.
Ti servono accesso root o privilegi sudo per installare i pacchetti Docker e configurare il sistema. Docker richiede anche questi pacchetti base:
apt-transport-https,ca-certificates,curlegnupg. La maggior parte dei sistemi Debian li ha già installati, ma verificherai questo passaggio più avanti.I requisiti hardware sono minimi:
Se usi l’ambiente desktop GNOME, assicurati di avere installato il pacchetto
gnome-terminal. Alcuni strumenti di gestione Docker lo richiedono per le sessioni interattive dei container.Rimuovi eventuali vecchie installazioni di Docker prima di iniziare. Pacchetti legacy come
docker,docker.ioodocker-enginepossono entrare in conflitto con l’attuale Docker Engine. Esegui questo comando per pulire le versioni precedenti:Il firewall e la configurazione di rete possono influire sul networking dei container. Docker crea proprie interfacce di rete e regole iptables. Se usi UFW o regole firewall personalizzate, potresti doverle adeguare dopo l’installazione per consentire il traffico dei container.
Verifica questi requisiti ora: ti farà risparmiare tempo di troubleshooting più tardi.
Metodi di installazione
Hai quattro modi per installare Docker su Debian, ognuno con compromessi diversi. Ti aiuterò a scegliere il metodo più adatto al tuo ambiente e ai requisiti di sicurezza.
Cerchi invece le istruzioni per Ubuntu? Abbiamo una guida completa passo passo per installare Docker su Ubuntu.
Metodo 1: Repository ufficiale di Docker (consigliato)
Questo metodo ti fornisce l’ultima versione di Docker con aggiornamenti di sicurezza regolari.
Il repository ufficiale di Docker ha sempre le release stabili più recenti e ricevi aggiornamenti automatici tramite il gestore pacchetti. Non rimarrai bloccato con versioni obsolete che mancano di patch di sicurezza importanti o nuove funzionalità.
Inizia aggiornando il sistema e installando i pacchetti richiesti da Docker:
Poi aggiungi la chiave GPG ufficiale di Docker per verificare l’autenticità dei pacchetti:
Configura il repository aggiungendolo alla lista delle sorgenti:
Infine, installa Docker Engine, la CLI e Compose:
Questo ti dà tutto il necessario per deployment Docker in produzione.
Metodo 2: Repository predefinito di Debian
Questo approccio installa Docker con un solo comando, ma otterrai una versione più vecchia.
Il repository predefinito di Debian rende l’installazione semplice: esegui
sudo apt install docker.io. Ma c’è un problema: spesso otterrai versioni di Docker indietro di mesi o anni rispetto al rilascio corrente.Questo metodo va bene per test di base o quando ti serve una versione specifica più vecchia per compatibilità. Ma perderai aggiornamenti di sicurezza, miglioramenti delle prestazioni e nuove funzionalità delle release recenti.
Usa questo metodo solo quando il repository ufficiale non è un’opzione.
Metodo 3: Installazione manuale dei pacchetti DEB
Ti mostro come scaricare e installare i pacchetti direttamente quando non puoi accedere ai repository.
Questo metodo funziona per sistemi air‑gapped, reti aziendali con accesso internet limitato, o quando devi installare la stessa versione di Docker su più macchine senza scaricare ogni volta.
Scarica i pacchetti DEB dal sito di Docker:
Vai su
https://download.docker.com/linux/debian/dists/Scegli la tua versione di Debian (bullseye, bookworm, ecc.)
Vai su
pool/stable/amd64/Scarica questi pacchetti:
docker-ce_*.deb,docker-ce-cli_*.debecontainerd.io_*.debInstalla i pacchetti in quest’ordine:
Se ottieni errori di dipendenze, esegui
sudo apt-get install -fper risolverli.Questo metodo richiede più lavoro manuale per gli aggiornamenti, ma ti dà il controllo completo sulla versione da installare.
Metodo 4: Script di convenienza
L’ultimo metodo che tratto offre un’installazione rapida per ambienti di test, ma dovresti prima verificare lo script.
Docker fornisce script d’installazione che rilevano il tuo sistema e installano Docker automaticamente. Sono comodi per avviare velocemente ambienti di test o quando devi configurare Docker su più sistemi.
Rivedi sempre lo script prima di eseguirlo:
Cerca qualcosa di sospetto o inaspettato. Lo script modificherà la configurazione del sistema, quindi è bene sapere cosa fa.
Esegui lo script dopo averlo verificato:
Non usare gli script di convenienza in produzione. Sono pensati per una configurazione rapida, non per deployment sicuri e riproducibili. Per i sistemi critici resta sul metodo del repository ufficiale.
Consiglio di scegliere il metodo del repository ufficiale a meno che tu non abbia vincoli specifici che richiedano un approccio diverso.
Verifica dell’installazione
L’installazione è solo il primo passo: devi confermare che Docker funzioni davvero prima di distribuire qualsiasi cosa. Questi test rapidi ti diranno se la tua configurazione Docker è pronta per carichi reali.
Controlla la versione di Docker per confermare che l’installazione sia completata:
Dovresti vedere un output tipo
Docker version xx.x.x, build x. Se ottieni un errore "command not found", Docker non è stato installato correttamente o non è nel tuo PATH.Ottieni informazioni dettagliate sulla build per vedere quali componenti stanno girando:
Questo mostra versioni separate di client e server, più dettagli sull’architettura. La sezione server conferma che il demone Docker è in esecuzione ed è accessibile.
Esegui un container di test per validare che tutto funzioni end-to-end:
Docker scaricherà l’immagine hello-world ed eseguirà il container. Se tutto funziona correttamente, vedrai un messaggio che spiega come funzionano i container Docker. Questo test conferma che Docker può scaricare immagini, creare container ed eseguire comandi.
Puoi verificare che Docker Compose sia installato e funzionante:
Dovresti vedere un output tipo
Docker Compose version vX.xx.x. Nota che le installazioni più recenti usanodocker compose(con spazio) invece del vecchio comandodocker-compose.Se tutti questi comandi funzionano senza errori, la tua installazione Docker è pronta per l’uso in produzione.
Pronto a eseguire il tuo primo vero container? Scopri passo passo come eseguire le immagini Docker.
Configurazione post‑installazione
Docker funziona subito, ma vorrai configurare alcune cose per l’uso quotidiano. In questa sezione tratto la gestione del servizio e i permessi utente che rendono Docker più comodo e sicuro.
Gestione del servizio
Puoi controllare quando Docker gira con questi comandi systemd:
Per abilitare l’avvio automatico di Docker all’avvio del sistema, esegui:
Questo assicura che Docker giri a ogni riavvio del server, come desiderabile nei sistemi di produzione.
Se ti serve verificare se Docker è in esecuzione e vederne lo stato corrente, esegui:
Vedrai se il servizio è attivo, da quanto tempo è in esecuzione e gli ultimi messaggi di log. Se Docker non funziona, questo comando di solito mostra il motivo.
Per risolvere problemi del servizio, controlla i log:
Questo mostra log dettagliati del demone Docker che aiutano a diagnosticare problemi di avvio, errori di permessi o di configurazione.
Accesso utente non root
Se vuoi aggiungere il tuo utente al gruppo docker per eseguire comandi Docker senza sudo:
Questo aggiunge l’utente corrente al gruppo
docker, dandogli i permessi per comunicare con il demone Docker.Dovrai poi disconnetterti e rientrare perché la modifica abbia effetto:
In alternativa, riavvia la sessione del terminale. Puoi anche eseguire
newgrp dockerper attivare il gruppo nella sessione corrente senza disconnetterti.Infine, per testare l’accesso non root, esegui questo comando Docker:
Se funziona senza sudo, sei a posto.
Ecco però il compromesso in termini di sicurezza: gli utenti nel gruppo docker hanno accesso equivalente a root sul sistema. Possono montare directory dell’host, accedere a file sensibili e potenzialmente evadere dai container per compromettere l’host.
Aggiungi solo utenti fidati al gruppo docker e non farlo mai su sistemi condivisi in cui non controlli tutti gli utenti.
Configura queste impostazioni una volta e lavorare con Docker ogni giorno diventa molto più semplice.
Configurazione del driver di storage
Il driver di storage di Docker gestisce come immagini e dati dei container vengono archiviati sul sistema. La maggior parte degli utenti non deve mai cambiarlo, ma capire le opzioni aiuta a ottimizzare le prestazioni per carichi specifici.
Docker seleziona automaticamente il driver di storage migliore per il tuo sistema durante l’installazione. Su Debian, di solito è
overlay2, che offre ottime prestazioni e stabilità nella maggior parte dei casi.Controlla il driver di storage attuale con questo comando:
Il driver
overlay2funziona bene perché:Potresti aver bisogno di un driver diverso se esegui carichi specializzati o hai requisiti specifici di filesystem.
Per esempio, alcuni sistemi di storage enterprise funzionano meglio con il driver
devicemapper, oppure potresti aver bisogno divfsper fare debugging di problemi del filesystem dei container.Puoi cambiare il driver di storage modificando la configurazione del demone di Docker:
Qui aggiungi o modifica l’impostazione storage-driver:
Ricorda infine di riavviare Docker per applicare la modifica:
Attenzione: cambiare driver di storage rende inaccessibili i container e le immagini esistenti. Esegui prima il backup dei dati importanti o esporta i container che vuoi conservare.
Ora puoi testare il nuovo driver scaricando un’immagine ed eseguendo un container:
In poche parole, resta con
overlay2a meno che tu non abbia requisiti specifici che impongano un driver diverso.Hardening della sicurezza
Le installazioni Docker predefinite vanno bene per lo sviluppo, ma gli ambienti di produzione richiedono ulteriori livelli di sicurezza. Queste configurazioni proteggono l’host da evasioni dei container e attacchi di esaurimento risorse.
Integrazione SELinux/AppArmor
I controlli di accesso obbligatori aggiungono un livello di sicurezza che limita ciò che i container possono fare, anche se compromessi. Senza questi controlli, un container che gira come root può potenzialmente accedere a risorse dell’host che non dovrebbe toccare.
Puoi abilitare AppArmor per Docker, il framework di sicurezza predefinito su Debian, eseguendo questi comandi:
Una volta che AppArmor è in esecuzione, carica il profilo di sicurezza di Docker:
Ora puoi eseguire container con la protezione AppArmor abilitata:
Il profilo
docker-defaultlimita capacità del container come il montaggio di filesystem, l’accesso a interfacce di rete raw e il caricamento di moduli del kernel.Per sistemi SELinux (se lo usi al posto di AppArmor), abilita prima la gestione dei container:
Poi esegui i container con etichette SELinux:
Questi controlli bloccano molte tecniche comuni di evasione dai container e limitano i danni di container compromessi.
Configurazione del demone
Puoi (e dovresti) personalizzare le impostazioni del demone Docker per ridurre la superficie d’attacco e migliorare la postura di sicurezza. Crea o modifica il file
/etc/docker/daemon.json:Ecco cosa fa ogni impostazione:
live-restore: truemantiene i container in esecuzione se il demone Docker si arresta in modo anomalouserland-proxy: falseusa direttamente iptables invece del proxy in userland per prestazioni migliorino-new-privileges: trueimpedisce ai container di acquisire nuovi privilegiicc: falsedisabilita la comunicazione tra container per impostazione predefinitadisable-legacy-registry: trueblocca l’accesso a protocolli di registry vecchi e insicuriDopo aver apportato le modifiche, riavvia Docker per applicarle:
Dovresti anche eseguire i container come utenti non root quando possibile:
Questo limita ciò che i container compromessi possono fare al tuo sistema.
Limiti di risorse con control group (cgroups)
I container senza limiti di risorse possono consumare tutta la CPU, la memoria e l’I/O disponibili, mandando giù l’intero host. I control group (cgroups) evitano questo imponendo limiti rigidi sull’uso delle risorse.
Inizia con i limiti di memoria per evitare che i container usino RAM eccessiva:
Puoi anche limitare l’uso della CPU per impedire a un container di monopolizzare la potenza di calcolo:
Per sistemi con I/O su disco elevato, controlla le velocità di lettura/scrittura:
Puoi anche combinare più limiti per un controllo completo delle risorse:
Per limiti coerenti su tutti i container, configura i default nel tuo daemon.json:
Questi limiti prevengono attacchi di esaurimento risorse e garantiscono una condivisione equa tra i container.
Configura queste misure di sicurezza una volta e il tuo ambiente Docker diventa molto più difficile da compromettere.
Devi padroneggiare i comandi Docker per la gestione quotidiana? Questi 18 comandi Docker essenziali ti renderanno produttivo.
Risoluzione dei problemi comuni
Anche con un’installazione corretta, Docker può incappare in intoppi che impediscono ai container di funzionare. Ecco i problemi più comuni e come risolverli rapidamente.
Errori di permessi
La maggior parte dei problemi di permessi in Docker dipende dal fatto che il tuo utente non ha accesso al file socket di Docker. Quando vedi
Got permission denied while trying to connect to the Docker daemon socket, significa che non sei ancora nel gruppo docker.Succede perché Docker gira come root, ma crea un socket accessibile ai membri del gruppo docker. Aggiungiti al gruppo:
Devi disconnetterti e rientrare perché la modifica abbia effetto. Se non vuoi farlo ora, puoi attivare il gruppo nella sessione corrente:
Gli errori di permessi sui file all’interno dei container sono diversi ma altrettanto comuni. Accadono quando il processo del container non può leggere o scrivere file montati dall’host. Il container potrebbe girare con un ID utente diverso da quello proprietario dei tuoi file.
Controlla quale utente è proprietario dei file:
La maggior parte dei container Docker gira come ID utente 1000 per impostazione predefinita. Se i file sono di root o di un altro utente, cambia la proprietà:
Se usi SELinux (invece di AppArmor), potresti vedere negazioni di permessi diverse che compaiono nei log di audit. Queste sono più complesse perché SELinux controlla l’accesso in base ai contesti di sicurezza, non solo agli ID utente.
Cerca violazioni di accesso recenti:
Correggi i contesti SELinux abilitando la gestione dei container e ripristinando le etichette corrette sui volumi Docker:
Errori del servizio
Quando Docker non si avvia o continua a crashare, devi capire cosa fallisce prima di poterlo risolvere. Lo stato del servizio systemd ti dà una panoramica rapida:
Questo mostra se Docker è in esecuzione e eventuali messaggi di errore recenti. Ma per un troubleshooting dettagliato, è meglio osservare i log in tempo reale mentre Docker prova ad avviarsi:
Un errore di avvio comune si verifica quando Docker non si è arrestato correttamente. Vedrai un errore tipo "failed to start daemon: pid file found, ensure docker is not running." Significa che c’è un file di processo residuo che confonde lo script di avvio.
Rimuovi il file obsoleto e prova a riavviare:
Problemi di storage sono un’altra causa frequente di errori del demone. Docker archivia tutti i suoi dati in
/var/lib/dockere, se questa directory esaurisce lo spazio o si corrompe, Docker non può avviarsi correttamente.Controlla quanto spazio è disponibile:
Se lo spazio è poco, pulisci container e immagini vecchi che non stai usando:
Conflitti di rete possono anche impedire l’avvio di Docker. Succede quando la rete bridge predefinita di Docker (di solito 172.17.0.0/16) va in conflitto con la tua configurazione di rete esistente. Vedrai errori su intervalli di indirizzi non disponibili.
Risolvi configurando un IP bridge personalizzato che non vada in conflitto con la tua rete. Modifica
/etc/docker/daemon.json:Dopo la modifica, riavvia Docker per usare la nuova configurazione di rete:
Problemi con kernel obsoleto
Docker dipende dalle funzionalità del kernel Linux per containerizzazione, networking e sicurezza. Se il kernel è troppo vecchio, avrai problemi che non si possono risolvere senza aggiornare.
Controlla la versione del kernel in uso con questo comando:
Docker richiede almeno il kernel 3.10 per la funzionalità di base, ma per la produzione è meglio 4.0 o più recente. Qualsiasi versione precedente alla 3.10 semplicemente non funziona con le versioni moderne di Docker.
Aggiornare il kernel su Debian è semplice: installa il pacchetto del kernel più recente:
Il nuovo kernel non sarà attivo finché non riavvii il sistema:
A volte il kernel è abbastanza recente, ma alcuni moduli non sono caricati. Docker ha bisogno di moduli specifici per funzionalità di rete e containerizzazione. Vedrai errori su interfacce di rete non disponibili o container che non si avviano correttamente.
Carica manualmente i moduli essenziali:
Questi moduli dovrebbero caricarsi automaticamente, ma se non succede, rendili permanenti aggiungendoli alla configurazione di sistema:
Anche con un kernel recente, potresti incontrare errori del runtime dei container che dicono "operation not supported". Di solito significa che il kernel è stato compilato senza alcune funzionalità che Docker si aspetta. Purtroppo non c’è una soluzione alternativa per funzionalità del kernel mancanti: serve un kernel configurato correttamente.
La maggior parte dei problemi d’installazione di Docker ricade in tre aree: permessi utente, configurazione del servizio o compatibilità del kernel. Risolvi la causa alla radice invece di aggirare i sintomi e il tuo ambiente Docker sarà molto più stabile.
Lavori con database in container? La configurazione di PostgreSQL in Docker è più semplice di quanto pensi.
Disinstallazione di Docker
A volte hai bisogno di rimuovere completamente Docker dal sistema, che tu stia passando a un runtime di container diverso o ripartendo da zero dopo problemi di configurazione.
Questo processo va oltre la semplice rimozione dei pacchetti: vorrai anche pulire dati e modifiche di sistema.
Inizia rimuovendo tutti i pacchetti Docker dal sistema. Il comando esatto dipende da come hai installato Docker in origine.
Se hai installato dal repository ufficiale di Docker:
Se hai installato dal repository predefinito di Debian:
Questo rimuove i pacchetti ma lascia i file di configurazione e le dipendenze che altri pacchetti potrebbero ancora usare. Per rimuovere anche quelli:
Poi, elimina la directory dati di Docker se vuoi rimuovere tutte le immagini, i container e i volumi. Questo passaggio è opzionale ma consigliato per una pulizia completa.
Docker memorizza tutto in
/var/lib/dockerper impostazione predefinita. Rimuovere questa directory elimina definitivamente tutti i container, le immagini, le reti e i volumi:Dovresti anche rimuovere la directory di configurazione di Docker:
Continua pulendo gruppi e utenti di sistema creati da Docker durante l’installazione. Docker aggiunge un gruppo
dockeral sistema e potrebbe aver modificato i permessi utente.Rimuovi il gruppo docker:
Se hai aggiunto utenti al gruppo docker, la loro appartenenza verrà pulita automaticamente quando elimini il gruppo. Puoi anche rimuovere manualmente singoli utenti dal gruppo prima di eliminarlo:
Quindi, rimuovi i file di servizio systemd e i file socket di Docker:
Infine, controlla se restano processi Docker ancora in esecuzione:
Se ne trovi, fermali manualmente:
Dopo questi passaggi, Docker dovrebbe essere completamente rimosso dal sistema senza file o configurazioni residue.
Valuti alternative a Docker? Esplora altre piattaforme di containerizzazione prima di decidere.
Conclusione e best practice
Ora hai Docker in esecuzione su Debian, ma l’installazione è solo l’inizio. Il modo in cui configuri e mantieni il tuo ambiente Docker determina se avrai un’esperienza di produzione fluida o se passerai le notti a fare troubleshooting dei container.
Crei container multipiattaforma per architetture diverse? Docker Buildx semplifica le build cross‑platform.
Scegli il metodo d’installazione in base ai tuoi vincoli. Il repository ufficiale di Docker è la scelta migliore per la maggior parte degli ambienti di produzione perché ottieni le ultime funzionalità e patch di sicurezza. Ma reti air‑gapped o requisiti di coerenza di versione possono richiedere l’installazione manuale dei DEB.
Metti subito in sicurezza il tuo ambiente Docker. Abilita AppArmor o SELinux per controlli di accesso obbligatori, configura impostazioni restrittive del demone e usa i cgroups per limitare le risorse dei container. Mantieni Docker aggiornato con update di sicurezza automatici, ma testali prima in staging.
Usa Docker Compose per applicazioni multi‑container. Invece di gestire complessi comandi
docker run, definisci lo stack applicativo in YAML.Monitora l’uso del disco e pulisci regolarmente. Esegui
docker system pruneper rimuovere le immagini inutilizzate e imposta la rotazione dei log per evitare che i container riempiano il disco.Quando ti serve più dettaglio, la documentazione ufficiale copre argomenti avanzati che questa guida non tratta. Consulta la documentazione Docker per approfondimenti su networking, storage driver e orchestration. La documentazione del pacchetto Debian Docker spiega le configurazioni specifiche del pacchetto e i problemi noti.
Docker su Debian ti offre una piattaforma stabile e potente per applicazioni containerizzate, ma solo se lo configuri con attenzione e lo mantieni con costanza.
Vuoi saperne di più su Docker, la containerizzazione e il suo impiego in data science e machine learning? Questi corsi DataCamp sono il passo successivo ideale: