Installazione di Docker su Ubuntu: APT, Snap, Rootless – Guida completa 2026
Scegli il percorso di installazione di Docker corretto su Ubuntu.
L’installazione di Docker su Ubuntu dovrebbe essere semplice, ma nella pratica diverse opzioni “a forma di Docker” competono per lo stesso nome comando, ognuna con packaging, comportamenti di aggiornamento e implicazioni di sicurezza diversi.
Questa guida confronta ogni principale percorso di installazione in modo che tu possa scegliere quello più adatto alla tua macchina.
Le opzioni che incontrerai includono:
docker.iodai repository di Ubuntudocker-cedal repository APT ufficiale di Docker- Docker da Snap
- Docker Desktop
- pacchetti
.debscaricati manualmente - lo script di convenienza di Docker
- Rootless Docker

Anche se forniscono tutti strumenti per i container, non sono pacchetti intercambiabili. La scelta migliore dipende dal fatto che la macchina sia una postazione da sviluppatore, un runner CI, un server piccolo, una macchina per self-hosting o un host di produzione. Il mio consiglio di default è calmo ma fermo: per la maggior parte degli utenti tecnici su macchine Ubuntu normali, installare Docker Engine dal repository APT ufficiale di Docker. Usa docker.io di Ubuntu solo quando l’integrazione con la distribuzione è più importante del packaging upstream di Docker. Evita il pacchetto Snap a meno che tu non voglia specificamente il comportamento Snap e ne comprenda i limiti. Rootless Docker vale la pena conoscerlo, ma non è automaticamente il default migliore per ogni macchina.
Questa guida spiega i compromessi, copre la sicurezza post-installazione e ti fornisce percorsi di installazione puliti per ciascun metodo. Una volta che Docker Engine è in esecuzione, il Docker Cheatsheet è il tuo riferimento quotidiano per i comandi, e il Docker Compose Cheatsheet copre le configurazioni multi-container. Entrambi si affiancano a Git, VS Code e alle guide CI/CD in Strumenti per Sviluppatori: La Guida Completa ai Flussi di Lavoro Moderni.
Raccomandazione Rapida
La tabella sottostante riassume quale percorso di installazione si adatta alle comuni scenarie.
| Caso d’uso | Installazione consigliata |
|---|---|
| Postazione da sviluppatore | Repository APT ufficiale di Docker |
| Runner CI | Repository APT ufficiale di Docker, versione bloccata se necessario |
| Piccolo server self-hosted | Repository APT ufficiale di Docker |
| Server di produzione | Repository APT ufficiale di Docker, aggiornamenti controllati |
| Sistema conservativo solo Ubuntu | Pacchetto docker.io di Ubuntu |
| Esperimento rapido su desktop | Docker Desktop o repository APT ufficiale |
| Configurazione Ubuntu gestita da Snap | Docker Snap, con cautela |
| Forte requisito di daemon non-root | Rootless Docker |
| Host isolato (air-gapped) | Pacchetti .deb manuali o mirror interno |
Se non hai una ragione speciale per scegliere diversamente, il repository APT ufficiale di Docker è il default.
Cosa Viene Installato
Una configurazione normale di Docker Engine include diverse parti mobili:
- Daemon Docker:
dockerd - CLI Docker:
docker - Runtime dei container:
containerd - Runtime di basso livello:
runc - Plugin Buildx:
docker buildx - Plugin Compose:
docker compose
Il moderno Docker Compose è solitamente installato come plugin della CLI Docker. Ciò significa che il comando è:
docker compose version
Non:
docker-compose version
Il vecchio comando docker-compose esiste ancora nelle guide e nei sistemi più vecchi, ma le nuove configurazioni Ubuntu dovrebbero generalmente usare il plugin Compose.
Opzione 1: Installare Docker dal Repository APT Ufficiale di Docker
Questa è la scelta migliore di default per la maggior parte degli sviluppatori e degli utenti DevOps. Ottieni il packaging upstream di Docker, le versioni correnti di Docker Engine, Buildx, il plugin Compose e un percorso di aggiornamento APT normale.
Rimuovi Prima i Pacchetti in Conflitto
Prima di installare Docker CE, rimuovi i pacchetti che potrebbero confliggere con i pacchetti ufficiali di Docker.
sudo apt remove docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc
È normale se APT dice che alcuni di questi pacchetti non sono installati.
Questo comando non rimuove le immagini, i container, i volumi o le reti di Docker memorizzati sotto /var/lib/docker. Se vuoi un reset pulito, questo è un passaggio separato e dovrebbe essere fatto deliberatamente.
Aggiungi il Repository APT Ufficiale di Docker
Installa i prerequisiti:
sudo apt update
sudo apt install ca-certificates curl
Crea la directory del keyring:
sudo install -m 0755 -d /etc/apt/keyrings
Scarica la chiave del repository di Docker:
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
Permetti ad APT di leggere la chiave:
sudo chmod a+r /etc/apt/keyrings/docker.asc
Aggiungi il repository Docker usando il formato .sources deb822:
sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
Aggiorna i metadati di APT:
sudo apt update
Installa Docker Engine, Buildx e Compose
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Controlla il servizio:
sudo systemctl status docker
Se non è in esecuzione:
sudo systemctl start docker
Verifica l’installazione:
sudo docker run hello-world
Controlla le versioni:
docker --version
docker buildx version
docker compose version
A questo punto Docker funziona, anche se hai ancora bisogno di sudo per la maggior parte dei comandi a meno che tu non configuri l’accesso non-root nella sezione post-installazione sottostante.
Opzione 2: Installare Docker dai Repository di Ubuntu
Ubuntu fornisce il pacchetto docker.io, che puoi installare con:
sudo apt update
sudo apt install docker.io docker-compose-v2
Avvia e abilita Docker:
sudo systemctl enable --now docker
Verifica:
sudo docker run hello-world
Quando docker.io di Ubuntu ha Senso
Il pacchetto di Ubuntu può essere una buona scelta quando:
- Preferisci i pacchetti mantenuti da Ubuntu.
- Vuoi una versione allineata con il processo di rilascio di Ubuntu.
- Gestisci molti host Ubuntu con repository standard.
- Non hai bisogno dell’ultima versione upstream di Docker.
- Vuoi meno sorgenti APT di terze parti.
Questa è una scelta ragionevole. Non è “sbagliata”.
Quando docker.io di Ubuntu Non è Ideale
Usa il repository ufficiale di Docker invece quando:
- Vuoi l’upstream Docker Engine corrente.
- Segui la documentazione stessa di Docker.
- Ti affidi al comportamento corrente di Buildx e Compose.
- Vuoi i nomi dei pacchetti Docker CE.
- Stai debuggando problemi contro la documentazione upstream di Docker.
- Hai bisogno di una parità prevedibile della versione Docker tra distribuzioni.
Il mio pregiudizio: per le macchine da sviluppatore e gli host pesanti sui container, usa il repository APT ufficiale di Docker. Per le macchine Ubuntu gestite in modo conservativo, docker.io è accettabile.
Opzione 3: Installare Docker con Snap
Lo snap di Docker si installa con un singolo comando, ma la semplicità non significa sempre un comportamento prevedibile su un server o su una macchina da sviluppo.
sudo snap install docker
I pacchetti Snap hanno il proprio modello di packaging, comportamento di aggiornamento, presupposti di confinamento e layout del filesystem. Questo va bene per molte app desktop, ma Docker Engine è già un runtime dei container a livello di sistema, quindi lo strato extra Snap può sorprendere le persone. Se gestisci altro software con Snap, il Snap Package Manager Cheatsheet spiega canali, confinamento e comportamento di aggiornamento in più dettaglio.
Quando Docker Snap ha Senso
Docker Snap può essere ragionevole quando:
- Gestisci intenzionalmente il software con Snap.
- Stai usando Ubuntu Core o un ambiente pesante su Snap.
- Vuoi aggiornamenti automatici in stile snap.
- Stai sperimentando e non ti interessa di allinearti alle istruzioni APT upstream di Docker.
Perché Evito Solitamente Docker Snap
Evito solitamente lo snap di Docker per l’uso da sviluppo e server perché:
- La maggior parte della documentazione di Docker presuppone il layout standard di Docker Engine.
- I percorsi di risoluzione dei problemi possono differire dalle installazioni APT.
- La gestione dei servizi può sembrare meno trasparente.
- Gli aggiornamenti automatici di Snap possono essere inconvenienti per il software infrastrutturale.
- Alcuni dettagli su bind mount, socket e integrazione host possono sorprenderti.
Se Docker è centrale nel tuo flusso di lavoro, installalo come infrastruttura piuttosto che come un’app desktop occasionale — anche quando un’installazione Snap sembra allettante in superficie.
Opzione 4: Installare Docker da Pacchetti .deb Manuali
L’installazione manuale .deb è utile quando:
- La macchina non può usare repository APT esterni.
- Stai costruendo un processo di installazione offline.
- Fai il mirror dei pacchetti internamente.
- Hai bisogno di un controllo rigoroso dei cambiamenti.
Il compromesso è la manutenzione, perché devi scaricare e installare manualmente i nuovi pacchetti ogni volta che aggiorni.
Un’installazione manuale solitamente richiede questi pacchetti:
containerd.iodocker-cedocker-ce-clidocker-buildx-plugindocker-compose-plugin
Installali con:
sudo dpkg -i ./containerd.io_*.deb \
./docker-ce_*.deb \
./docker-ce-cli_*.deb \
./docker-buildx-plugin_*.deb \
./docker-compose-plugin_*.deb
Poi correggi le dipendenze mancanti se necessario:
sudo apt --fix-broken install
Verifica:
sudo systemctl status docker
sudo docker run hello-world
Le installazioni .deb manuali non sono la mia prima scelta, ma rimangono valide per ambienti controllati o isolati (air-gapped) dove l’approvazione esplicita dei pacchetti è più importante della convenienza.
Opzione 5: Usare lo Script di Convenienza di Docker
Docker fornisce uno script di convenienza:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Puoi anteprima cosa farebbe:
sudo sh get-docker.sh --dry-run
Lo script di convenienza è utile per macchine di test descartabili, demo, laboratori e ambienti temporanei, ma non lo userei come metodo di installazione principale per sistemi di produzione. Uno script che configura repository e installa pacchetti in modo non interattivo è comodo, ma l’infrastruttura a lungo termine merita passaggi espliciti e revisionabili — quindi per gli host di produzione, usa direttamente il metodo del repository APT.
Docker Desktop vs Docker Engine su Ubuntu
Docker Desktop per Linux è un prodotto diverso da Docker Engine. Docker Engine è il runtime lato server e il flusso di lavoro CLI che la maggior parte degli utenti dei server Linux si aspetta, mentre Docker Desktop aggiunge un’interfaccia grafica, integrazioni Desktop e un’esperienza del prodotto più simile all’uso di Docker su macOS e Windows.
Usa Docker Desktop quando:
- Vuoi un’esperienza Docker grafica.
- Vuoi funzionalità Desktop.
- Ti stai allineando con un team che standardizza su Docker Desktop.
- Non ti dispiace lo strato extra.
Usa Docker Engine quando:
- Stai eseguendo un server.
- Vuoi un runtime nativo Linux semplice.
- Preferisci i servizi gestiti da systemd.
- Stai costruendo infrastruttura CI, DevOps o self-hosted.
- Non hai bisogno dell’interfaccia grafica.
Per un pubblico di blog tecnico avanzato, Docker Engine è solitamente il default più interessante sui server Linux e sugli host CI.
Post-Installazione: Eseguire Docker Senza Sudo
Dopo l’installazione, questo funziona:
sudo docker ps
Ma questo potrebbe fallire:
docker ps
Questo perché il daemon Docker ascolta su un socket Unix posseduto da root. La correzione comune è aggiungere il tuo utente al gruppo docker.
Crea il gruppo se necessario:
sudo groupadd docker
Aggiungi il tuo utente:
sudo usermod -aG docker $USER
Applica la nuova appartenenza al gruppo:
newgrp docker
Oppure effettua logout e login di nuovo.
Testa:
docker run hello-world
Nota Importante sulla Sicurezza Riguardo al Gruppo Docker
Il gruppo docker non è un gruppo di convenienza innocuo. Un utente che può controllare il daemon Docker può solitamente ottenere un controllo equivalente a root dell’host, quindi per una macchina da sviluppatore personale questo è spesso accettabile, ma su un server condiviso è una decisione seria di controllo degli accessi. Tratta l’appartenenza al gruppo docker come un accesso amministrativo e, se questo sembra troppo ampio, considera Rootless Docker invece.
Rootless Docker su Ubuntu
Rootless Docker esegue il daemon Docker e i container come utente non-root. Questo non è lo stesso che aggiungere il tuo utente al gruppo docker — con il gruppo docker, il daemon si esegue ancora come root, mentre in modalità rootless il daemon stesso si esegue come il tuo utente.
Quando Rootless Docker ha Senso
Rootless Docker è utile quando:
- Vuoi ridurre il rischio root a livello di daemon.
- Sei su una macchina da sviluppo condivisa.
- Esegui container di proprietà dell’utente.
- Non hai bisogno di ogni funzionalità avanzata di rete e archiviazione.
- Vuoi un default più sicuro per carichi di lavoro sperimentali.
Quando Rootless Docker Potrebbe Essere Fastidioso
Rootless Docker può essere meno conveniente quando:
- Hai bisogno di container privilegiati.
- Ti affidi al binding di porte basse senza configurazione extra.
- Hai bisogno di alcuni pattern di networking dell’host.
- Ti aspetti un comportamento identico a Docker rootful.
- Stai seguendo guide scritte per installazioni normali di Docker Engine.
La modalità rootless migliora la postura di sicurezza, ma non è priva di attrito rispetto a un’installazione rootful standard.
Installa Rootless Docker
Installa i prerequisiti:
sudo apt update
sudo apt install uidmap
Se hai installato Docker da pacchetti DEB o APT, lo strumento di configurazione rootless dovrebbe essere disponibile:
dockerd-rootless-setuptool.sh install
Se Docker rootful è già in esecuzione e vuoi solo Rootless Docker, disabilita il daemon di sistema:
sudo systemctl disable --now docker.service docker.socket
Potresti anche dover rimuovere il socket rootful:
sudo rm -f /var/run/docker.sock
Dopo aver installato Rootless Docker, lo strumento di configurazione solitamente stampa variabili d’ambiente da aggiungere al tuo profilo shell. Solitamente assomigliano a questo:
export PATH=/usr/bin:$PATH
export DOCKER_HOST=unix:///run/user/1000/docker.sock
Il tuo UID potrebbe differire. Controlla l’output esatto dallo strumento di configurazione.
Abilita il lingering se vuoi che il servizio utente si esegua dopo il logout:
sudo loginctl enable-linger $USER
Controlla il servizio utente:
systemctl --user status docker
Esegui un container di test:
docker run hello-world
Docker Rootful vs Rootless Docker
| Argomento | Docker Rootful | Docker Rootless |
|---|---|---|
| Utente del daemon | root | utente normale |
| Comodità del comando | alta | media |
| Compatibilità | più alta | buona, ma non perfetta |
| Postura di sicurezza | più debole di default | migliore di default |
| Container privilegiati | supportati | limitati |
| Porte basse | semplice | necessita di configurazione extra |
| Uso server | comune | possibile, ma pianifica attentamente |
| Postazione da sviluppatore | comune | buona per utenti attenti alla sicurezza |
Il mio consiglio pratico:
- Usa Docker rootful normale per una macchina dev personale o un server semplice.
- Aggiungi solo utenti fidati al gruppo
docker. - Usa Rootless Docker quando l’isolamento dell’utente è importante.
- Non fingere che il gruppo
dockersia un confine di sicurezza.
Abilita Docker all’Avvio
Su Ubuntu, Docker installato da pacchetti normali solitamente si avvia automaticamente, ma vale la pena confermare dopo un’installazione fresca o una migrazione.
Controlla:
systemctl is-enabled docker
systemctl is-enabled containerd
Abilita manualmente se necessario:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
Avvia ora:
sudo systemctl start docker
Disabilita l’avvio automatico:
sudo systemctl disable docker.service
sudo systemctl disable containerd.service
Per Rootless Docker, usa il servizio utente:
systemctl --user enable docker
systemctl --user start docker
E abilita il lingering se necessario:
sudo loginctl enable-linger $USER
Installa o Verifica Docker Compose
Con il repository APT ufficiale di Docker, installa Compose come plugin:
sudo apt update
sudo apt install docker-compose-plugin
Verifica:
docker compose version
Se hai installato il pacchetto di Ubuntu, potresti usare:
sudo apt install docker-compose-v2
Preferisci:
docker compose up -d
Rispetto allo stile vecchio:
docker-compose up -d
Il comando con trattino docker-compose appartiene all’era vecchia di Compose standalone. Molti sistemi lo hanno ancora, ma la nuova documentazione dovrebbe usare docker compose.
Controlla Quale Docker Hai Installato
Quando erediti una macchina o debugghi una configurazione rotta, questi comandi aiutano a identificare quale packaging Docker è effettivamente in uso.
Controlla il binario Docker:
which docker
Controlla la proprietà del pacchetto:
dpkg -S "$(which docker)"
Elenca i pacchetti relativi a Docker:
dpkg -l | grep -E 'docker|containerd|runc'
Controlla la policy APT:
apt-cache policy docker-ce docker.io containerd.io docker-compose-plugin docker-compose-v2
Controlla Snap:
snap list | grep docker
Controlla lo stato del servizio:
systemctl status docker
systemctl status containerd
Controlla i dettagli del server Docker:
docker info
Se docker info fallisce senza sudo, controlla la tua appartenenza ai gruppi:
groups
Migra da docker.io Ubuntu a Docker CE
Ferma Docker:
sudo systemctl stop docker
Rimuovi i pacchetti Ubuntu:
sudo apt remove docker.io docker-compose docker-compose-v2 docker-doc containerd runc
Aggiungi il repository APT ufficiale di Docker usando i passaggi sopra.
Installa Docker CE:
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Avvia Docker:
sudo systemctl start docker
Controlla i container esistenti:
docker ps -a
docker images
docker volume ls
Normalmente, rimuovere i pacchetti non cancella /var/lib/docker, quindi le tue immagini, container e volumi potrebbero ancora esistere. Tuttavia, fai prima il backup dei dati importanti.
Migra da Docker Snap a Docker CE
Prima ispeziona cosa esiste:
snap list | grep docker
docker info
Ferma i carichi di lavoro e fai il backup dei volumi importanti o dei dati bind-mounted.
Rimuovi lo snap:
sudo snap remove docker
Poi installa Docker CE dal repository APT ufficiale.
Fai attenzione con le ubicazioni dei dati. I pacchetti Snap spesso usano percorsi diversi e regole di confinamento. Non dare per scontato che i dati di Docker Snap appariranno automaticamente sotto il percorso standard /var/lib/docker dopo la migrazione.
Per servizi importanti, esporta o fai il backup dei dati esplicitamente prima di cambiare le sorgenti dei pacchetti.
Blocca una Versione di Docker con APT
Per sistemi simili alla produzione, potresti voler aggiornamenti controllati.
Elenca le versioni disponibili:
apt list --all-versions docker-ce
Installa una versione specifica:
VERSION_STRING="5:29.0.0-1~ubuntu.24.04~noble"
sudo apt install docker-ce=$VERSION_STRING \
docker-ce-cli=$VERSION_STRING \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
Blocca i pacchetti Docker:
sudo apt-mark hold docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Rimuovi il blocco in seguito:
sudo apt-mark unhold docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Fai questo quando hai bisogno di finestre di cambiamento prevedibili. Per un laptop personale, potrebbe essere inutile.
Note su Firewall e Networking
Docker modifica le regole di filtraggio dei pacchetti per far funzionare il networking dei container, il che è importante se usi UFW, firewalld, nftables o regole firewall personalizzate.
Punti importanti:
- Le porte Docker pubblicate potrebbero bypassare le aspettative naive di UFW.
- Docker usa l’integrazione iptables.
- Le regole personalizzate dovrebbero tenere conto delle chain create da Docker.
- L’indurimento del server dovrebbe essere testato con mappature reali delle porte dei container.
- Non dare per scontato che
ufw denyprotegga una porta pubblicata da Docker.
Testa le porte esposte da un’altra macchina, non solo da localhost.
Esempio:
docker run --rm -p 8080:80 nginx
Poi da un altro host:
curl http://server-ip:8080
Sui server, il networking di Docker è parte del tuo modello di sicurezza, non un dettaglio di implementazione che puoi ignorare dopo l’installazione.
Errori Comuni e Correzioni
Permission Denied sul Socket Docker
Errore:
permission denied while trying to connect to the Docker daemon socket
Opzioni di correzione:
Usa sudo:
sudo docker ps
Oppure aggiungi il tuo utente al gruppo docker:
sudo usermod -aG docker $USER
newgrp docker
Ricorda che il gruppo docker è equivalente a root nella pratica, quindi tratta l’appartenenza al gruppo come una decisione di accesso privilegiato.
Il Daemon Docker Non è in Esecuzione
Controlla lo stato:
sudo systemctl status docker
Avvialo:
sudo systemctl start docker
Controlla i log:
journalctl -u docker --no-pager -n 100
Pacchetti Docker in Conflitto
Se l’installazione di Docker CE fallisce a causa di conflitti, rimuovi i vecchi pacchetti. Se APT stesso è in uno stato cattivo dopo aver aggiunto il repository Docker, risolvi il problema attraverso Ubuntu APT troubleshooting for broken packages and GPG errors prima di riprovare.
sudo apt remove docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc
Poi riprova:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Comando Compose Non Trovato
Controlla Compose moderno:
docker compose version
Installa il plugin:
sudo apt install docker-compose-plugin
Se ti aspettavi il vecchio comando:
docker-compose version
Potresti stare seguendo documentazione vecchia. Preferisci aggiornare il comando a docker compose.
Vecchia Config Docker di Proprietà Root
Se hai eseguito Docker con sudo prima di configurare l’accesso al gruppo, la tua config utente potrebbe essere di proprietà di root.
Correggi la proprietà:
sudo chown "$USER":"$USER" "$HOME/.docker" -R
sudo chmod g+rwx "$HOME/.docker" -R
Oppure rimuovi la config se non ne hai bisogno:
sudo rm -rf "$HOME/.docker"
Verrà ricreata.
Non Riesce a Connettersi a Rootless Docker
Controlla l’ambiente:
echo "$DOCKER_HOST"
Controlla il servizio utente:
systemctl --user status docker
Imposta il percorso del socket se necessario:
export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock
Aggiungilo al tuo profilo shell solo dopo aver confermato che è corretto.
Disinstalla Docker Engine
Rimuovi i pacchetti Docker CE:
sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
Rimuovi i dati di Docker solo se vuoi davvero eliminare immagini, container e volumi:
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
Rimuovi i file del repository Docker:
sudo rm -f /etc/apt/sources.list.d/docker.sources
sudo rm -f /etc/apt/keyrings/docker.asc
Aggiorna APT:
sudo apt update
Per Docker Snap:
sudo snap remove docker
Per docker.io Ubuntu:
sudo apt purge docker.io docker-compose-v2
Percorso di Installazione Raccomandato per la Maggior Parte degli Utenti Ubuntu
Per la maggior parte degli utenti tecnici Ubuntu, questo è il percorso pulito:
sudo apt remove docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc
sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
sudo tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt keyrings/docker.asc
EOF
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo docker run hello-world
Poi decidi se vuoi accesso al gruppo per comodità o Rootless Docker per isolamento più stretto:
sudo usermod -aG docker $USER
newgrp docker
docker run hello-world
Guida Finale e Opinione
L’installazione di Docker su Ubuntu è una scelta operativa, non solo una scelta di pacchetto. Il metodo che scegli influisce sugli aggiornamenti, sui confini di sicurezza e su quanto strettamente il tuo host corrisponde alla documentazione upstream di Docker.
Le mie regole pratiche sono:
- Usa il repository APT ufficiale di Docker per la maggior parte delle macchine da sviluppatore e DevOps.
- Usa
docker.ioUbuntu quando la consistenza del repository Ubuntu è più importante della freschezza upstream. - Evita Docker Snap per flussi di lavoro container seri a meno che tu non voglia intenzionalmente il comportamento Snap.
- Evita lo script di convenienza per gli host di produzione.
- Usa
docker composemoderno, non il vecchiodocker-compose. - Tratta il gruppo
dockercome accesso privilegiato. - Considera Rootless Docker quando l’isolamento dell’utente è importante.
- Blocca le versioni sui sistemi simili alla produzione.
- Testa il comportamento del firewall quando pubblichi porte sui server.
L’installazione di Docker più noiosa è solitamente la migliore: repository APT ufficiale, keyring esplicito, plugin Compose, servizio systemd, permessi compresi e nessun layer di packaging misterioso in mezzo. Una volta che l’engine è in posizione, i carichi di lavoro multi-servizio — inclusi stack LLM self-hosted — sono il passo naturale successivo; ad esempio, vedi Ollama in Docker Compose per eseguire modelli locali nei container. Per mantenere uno stack Compose in esecuzione attraverso i riavvii su un singolo server, Run Docker Compose as a Linux Service with systemd passa in rassegna i file unit e le abitudini operative.
Leggi di Più
- https://docs.docker.com/engine/install/ubuntu/ “Install Docker Engine on Ubuntu | Docker Docs”
- https://packages.ubuntu.com/noble/docker.io “Ubuntu - Details of package docker.io in noble”