- 1 1. Introduzione
- 2 2. Prerequisiti e preparazione
- 3 3. Installazione di Docker
- 4 4. Permessi utente ed esecuzione di Docker senza sudo
- 5 5. Verifica dell’avvio e del funzionamento
- 6 6. Installazione e utilizzo di Docker Compose
- 6.1 6-1. Verifica dell’installazione di Docker Compose V2
- 6.2 6-2. Vantaggi di Docker Compose
- 6.3 6-3. Struttura Base di un File di Configurazione Compose
- 6.4 6-4. Esempio: Configurazione Multi-Container (Web + Database)
- 6.5 6-5. Comandi Docker Compose Comuni
- 6.6 6-6. Casi d’Uso Raccomandati per Compose nello Sviluppo
- 7 7. Considerazioni sulla Sicurezza e Operative
- 7.1 7-1. Il Gruppo Docker Ha Privilegi “Effettivamente Root”
- 7.2 ● Punti Chiave da Conoscere
- 7.3 7-2. Considerare Rootless Docker (Opzione Avanzata)
- 7.4 7-3. Pulizia di Immagini e Container Non Utilizzati
- 7.5 7-4. Evitare l’Uso del Tag “latest” in Produzione
- 7.6 7-5. Usare Immagini Base Ufficiali nei Dockerfile
- 7.7 7-6. Essere Attenti all’Esposizione di Rete e Porte
- 7.8 7-7. Gestione dei Log Durante i Fallimenti
- 8 8. Problemi Comuni e Risoluzione dei Problemi
1. Introduzione
Quando si configura un ambiente di sviluppo su Ubuntu, le situazioni in cui si pensa “installiamo Docker per ora” sono sempre più comuni. Applicazioni web, elaborazione batch, database di test, middleware di test… Se si installano manualmente questi componenti ogni volta, una quantità enorme di tempo e sforzo viene consumata solo per la configurazione dell’ambiente.
È qui che la tecnologia di virtualizzazione tramite container Docker diventa estremamente utile. Con Docker è possibile gestire non solo l’applicazione stessa, ma anche tutte le librerie e le configurazioni necessarie insieme come una “immagine”. Una volta che Docker è installato su Ubuntu, è possibile:
- Avviare un nuovo ambiente di sviluppo in pochi minuti
- Garantire che tutti i membri del team possano riprodurre il comportamento nello stesso ambiente
- Ricreare localmente una configurazione simile a quella di produzione con facilità
Questi vantaggi possono essere ottenuti con uno sforzo minimo.
D’altro canto, per chi utilizza Docker per la prima volta, esistono molti ostacoli comuni:
- Non sapere quale procedura di installazione sia effettivamente corretta
- Non comprendere la differenza tra il repository predefinito di Ubuntu e il repository ufficiale di Docker
- Incontrare errori di permessi a causa di confusione su quando usare
sudo
Quando si cerca “ubuntu install docker”, si trovano molti articoli che elencano lunghe sequenze di comandi, ma spesso non spiegano perché quei passaggi sono necessari o cosa caratterizza un’installazione completa.
1-1. Obiettivo di questo articolo
Questo articolo è destinato ai lettori che vogliono installare Docker su Ubuntu e copre i seguenti punti chiave:
- La procedura attualmente più comune per installare Docker su Ubuntu
- Un metodo di installazione più gestibile usando il repository ufficiale
- Come eseguire il comando
dockersenzasudo - Verifica post‑installazione e comandi di base essenziali
- Un’introduzione agli strumenti più usati, come Docker Compose
Piuttosto che limitarsi a elencare i comandi, questa guida spiega perché ogni passaggio è necessario, aiutandoti a mantenere l’ambiente più facilmente in futuro.
1-2. Pubblico di riferimento e prerequisiti
Questo articolo è rivolto a chi:
- Conosce le operazioni di base di Ubuntu (aprire un terminale, usare il comando
apt, ecc.) - È uno sviluppatore o un aspirante ingegnere che prova Docker per la prima volta
- Sta valutando di migrare ambienti di test esistenti verso i container
Non è richiesto un know‑how avanzato di amministrazione Linux. Finché ti trovi a tuo agio nel digitare comandi in un terminale, questa guida dovrebbe essere sufficiente.
1-3. Struttura dell’articolo e modalità di lettura
L’articolo procede nell’ordine seguente:
- Verifica dei prerequisiti
- Metodi di installazione (repository ufficiale / script)
- Impostazioni dei permessi e verifica
- Installazione di Docker Compose
- Risoluzione dei problemi e prossimi passi
Puoi leggere l’articolo dall’inizio alla fine, oppure, se Docker è già installato, concentrarti solo sulle sezioni “Permessi” o “Compose”.
2. Prerequisiti e preparazione
L’installazione di Docker in sé è relativamente semplice, ma a seconda della versione di Ubuntu o dell’ambiente esistente, ci sono diversi punti da controllare in anticipo. Questa sezione riassume i prerequisiti e le preparazioni necessarie per un’installazione fluida.
2-1. Versioni di Ubuntu supportate
Docker funziona su molte versioni di Ubuntu, ma le seguenti release LTS sono le più comunemente usate:
- Ubuntu 22.04 LTS (Consigliata)
- Ubuntu 20.04 LTS
- Ubuntu 24.04 LTS (Ultima)
Le release LTS (Long Term Support) offrono stabilità a lungo termine, rendendole ideali per mantenere ambienti di sviluppo basati su Docker.
Le versioni non LTS (come la 23.10) possono essere utilizzate, ma le versioni LTS sono generalmente preferite negli ambienti professionali.
2-2. Pacchetti Docker pre‑installati
Il repository predefinito di Ubuntu include un pacchetto chiamato docker.io. Tuttavia, non è il pacchetto Docker ufficiale fornito da Docker Inc., e gli aggiornamenti tendono a ritardare. Pertanto, si consiglia vivamente di installare Docker dal repository ufficiale.
Per prima cosa, verifica e rimuovi eventuali pacchetti correlati a Docker, se necessario:
sudo apt remove docker docker.io containerd runc
Se il messaggio indica che nulla è installato, non è necessaria alcuna azione.
2-3. Aggiornamento di APT e installazione dei pacchetti richiesti
Prima di aggiungere il repository ufficiale di Docker, aggiorna APT e installa gli strumenti necessari:
sudo apt update
sudo apt install -y ca-certificates curl gnupg
Questi strumenti sono necessari per aggiungere in modo sicuro la chiave GPG e il repository di Docker.
2-4. Verifica dei privilegi di amministratore (sudo)
L’installazione di Docker richiede i privilegi sudo. Se il tuo account non ha accesso sudo, passa a un account amministratore o richiedi i permessi.
Puoi verificare l’accesso sudo con il seguente comando:
sudo -v
Se ti viene chiesta una password e il comando ha successo, sei pronto a procedere.
2-5. Verifica della connettività di rete
L’installazione di Docker richiede l’accesso a repository esterne, quindi è obbligatoria una connessione internet attiva. In ambienti aziendali o con proxy, il recupero della chiave GPG potrebbe fallire a causa di restrizioni di accesso.
In tali casi, consulta l’amministratore di rete per le impostazioni del proxy o le configurazioni della whitelist.
2-6. Scelta del metodo di installazione
Esistono tre modi principali per installare Docker:
- Installare tramite il repository ufficiale di Docker (Consigliato)
- Usare lo script di installazione
get.docker.com(Veloce e semplice) - Scaricare manualmente e installare i pacchetti
.debdi Docker (Casi speciali)
Questo articolo si concentra principalmente sul metodo del repository ufficiale, che è il più comune e il più facile da mantenere.
3. Installazione di Docker
Ora installiamo Docker su Ubuntu. Sebbene esistano più metodi di installazione, questa guida si concentra sul metodo del repository ufficiale di Docker, che è il più affidabile e ampiamente usato negli ambienti di produzione.
Questo metodo consente aggiornamenti stabili tramite apt upgrade, rendendolo ideale per un uso a lungo termine.
3-1. Aggiunta del repository ufficiale di Docker (Consigliato)
Per prima cosa, registra la chiave GPG ufficiale fornita da Docker e aggiungi il repository di Docker ad APT.
Una volta configurato correttamente, potrai evitare di installare accidentalmente il pacchetto obsoleto docker.io dal repository predefinito di Ubuntu.
3-1-1. Registrazione della chiave GPG
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
/etc/apt/keyrings/è la posizione consigliata per la memorizzazione delle chiavi su Ubuntu 22.04 e versioni successive--dearmorconverte la chiave in formato binario
Questo passaggio consente ad APT di fidarsi del repository ufficiale di Docker.
3-1-2. Aggiunta del repository
Successivamente, aggiungi il repository di Docker alla lista delle sorgenti di APT.
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo $VERSION_CODENAME) stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Punti chiave:
$(. /etc/os-release && echo $VERSION_CODENAME)inserisce automaticamente il nome in codice corretto di Ubuntu (comejammyofocal)- Viene aggiunto solo il repository stabile
3-1-3. Aggiornamento delle informazioni del repository
Dopo aver aggiunto il repository, aggiorna l’indice di APT.
sudo apt update
A questo punto, docker-ce (Docker Engine) dovrebbe comparire come pacchetto installabile.
3-2. Installazione di Docker Engine
Ora installa i principali pacchetti Docker.
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Ruoli dei pacchetti:
- docker-ce : nucleo di Docker Engine
- docker-ce-cli : interfaccia a riga di comando di Docker
- containerd.io : runtime di contenitori principale usato da Docker
- docker-buildx-plugin : funzionalità avanzate di build, come le build multi‑piattaforma
- docker-compose-plugin : Docker Compose V2 (comando
docker compose)
Dopo l’installazione, il demone Docker si avvia automaticamente.
3-3. Verifica dell’installazione
Controlla lo stato di runtime di Docker con il comando seguente:
sudo systemctl status docker
Se vedi active (running), Docker sta funzionando correttamente.
Premi q per uscire dalla visualizzazione dello stato.
3-4. Opzionale: Installazione tramite script per comodità
Docker fornisce anche uno script di installazione tutto‑in‑uno.
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Vantaggi:
- Meno comandi e configurazione rapida
- Ideale per ambienti semplici o temporanei
Svantaggi:
- Controllo delle versioni più difficile
- Spesso sconsigliato per ambienti di produzione o a lungo termine
Sebbene sia comodo per i principianti, questo articolo privilegia la manutenibilità e quindi si concentra sul metodo del repository ufficiale.
3-5. Note per le ultime versioni di Ubuntu (es. 24.04)
Subito dopo il rilascio di una nuova versione di Ubuntu, il repository ufficiale di Docker potrebbe non supportare ancora pienamente la nuova versione.
In tali casi, verifica quanto segue:
- Che la posizione e il formato della chiave GPG corrispondano alle specifiche attuali
- Che
VERSION_CODENAMEsia supportato ufficialmente - Che non si verifichino errori di firma durante
apt update
Se il supporto è ritardato, utilizzare temporaneamente lo script get.docker.com può essere una soluzione pratica.
4. Permessi utente ed esecuzione di Docker senza sudo
Dopo aver installato Docker, potresti voler iniziare a usare subito il comando docker. Tuttavia, per impostazione predefinita, devi anteporre sudo a ogni comando.
Questo comportamento è intenzionale per motivi di sicurezza, ma risulta scomodo per lo sviluppo quotidiano o per l’apprendimento. Per risolvere il problema, puoi aggiungere il tuo utente al gruppo docker, consentendo l’esecuzione dei comandi Docker senza sudo.
4-1. Perché è importante eseguire senza sudo
Su Ubuntu, il demone Docker (dockerd) gira con privilegi di root.
Di conseguenza, la creazione o rimozione di contenitori tramite il comando docker richiede normalmente l’accesso root.
Il gruppo docker esiste proprio per gestire questa esigenza.
- Gli utenti appartenenti a questo gruppo possono accedere direttamente al demone Docker
- Questo permette comandi come
docker runsenzasudo - Questa configurazione è quasi indispensabile per l’uso in sviluppo
Nota che il gruppo docker concede effettivamente privilegi quasi pari a quelli di root, quindi è necessario prestare attenzione in ambienti condivisi.
(Per desktop personali o WSL2, generalmente non è un problema.)
4-2. Aggiungere il tuo utente al gruppo docker
Aggiungi l’utente attualmente connesso al gruppo docker:
sudo usermod -aG docker $USER
Questo comando aggiunge l’utente al gruppo. L’opzione -aG sta per append to group (aggiungi al gruppo).
4-3. Applicare le modifiche
Le modifiche all’appartenenza al gruppo hanno effetto dopo aver effettuato il logout e il successivo login.
Per applicare immediatamente la modifica, puoi anche eseguire:
newgrp docker
Questo avvia una nuova sessione di shell con i permessi del gruppo docker applicati.
4-4. Verifica dell’esecuzione senza sudo
Ora prova Docker senza sudo:
docker run hello-world
Output di successo:
- Hello from Docker!
- L’immagine viene scaricata e il messaggio viene visualizzato
Se si verifica un errore, controlla quanto segue:
- Hai effettuato il logout e il login dopo aver modificato l’appartenenza al gruppo?
- Viene utilizzato
/usr/bin/docker? - Il demone Docker è in esecuzione (
systemctl status docker)?
4-5. Considerazioni di sicurezza (Importante)
Il gruppo docker fornisce privilegi potenti che sono effettivamente equivalenti a quelli di root.
- Lettura di file arbitrari
- Montaggio di directory host nei contenitori
- Esecuzione di operazioni di rete
- Controllo a livello di sistema tramite il socket Docker
Ciò è accettabile per sistemi personali, ma la gestione degli utenti è fondamentale su server condivisi.
In questi casi, potresti considerare Docker senza privilegi (rootless), di cui si parla nelle sezioni successive.
5. Verifica dell’avvio e del funzionamento
Una volta completata l’installazione di Docker e la configurazione dei permessi, il passo successivo è verificare che Docker funzioni correttamente.
Questa sezione spiega come controllare lo stato del servizio Docker e come eseguire effettivamente dei container.
5-1. Controllare lo stato del demone Docker
Per prima cosa, verifica che Docker sia in esecuzione correttamente in background.
sudo systemctl status docker
Indicatori di stato chiave:
- active (running) → Funzionamento normale
- inactive → Non in esecuzione (deve essere avviato manualmente)
- failed → Errore di configurazione o dipendenza
Se lo stato è inactive o failed, avvia Docker con il comando seguente:
sudo systemctl start docker
Per garantire che Docker si avvii automaticamente all’avvio del sistema operativo:
sudo systemctl enable docker
5-2. Verifica del funzionamento con il container hello-world
Il modo più comune per verificare l’installazione di Docker è eseguire l’immagine ufficiale hello-world.
docker run hello-world
Questo comando esegue le seguenti azioni:
- Scarica l’immagine da Docker Hub se non è presente localmente
- Avvia un container dall’immagine
- Visualizza un messaggio di test ed esce
Se ha successo, vedrai un output simile al seguente:
Hello from Docker!
This message shows that your installation appears to be working correctly.
Se appare questo messaggio, Docker è installato e funziona correttamente.
5-3. Prova dei comandi Docker di base
Una volta confermata l’operatività di base, prova alcuni comandi Docker comunemente usati.
5-3-1. Elencare le immagini Docker
docker images
Verrà mostrata una lista delle immagini scaricate localmente. Se compare hello-world, tutto sta funzionando come previsto.
5-3-2. Controllare i container in esecuzione
docker ps
Questo comando elenca i container attualmente in esecuzione.
(Il container hello-world termina immediatamente e di solito non compare.)
Per visualizzare anche i container arrestati:
docker ps -a
5-3-3. Eseguire un esempio con un’immagine ufficiale
Per provare un semplice server web Nginx:
docker run -d -p 8080:80 nginx
-d→ Esegui in background-p→ Mappa la porta host 8080 alla porta 80 del container
Apri http://localhost:8080 nel tuo browser per vedere la pagina predefinita di Nginx.
5-4. Arrestare e rimuovere i container
Puoi arrestare un container in esecuzione con il comando seguente:
docker stop <container-id>
Per rimuovere un container:
docker rm <container-id>
Per rimuovere le immagini inutilizzate:
docker rmi <image-id>
Ricorda che le dipendenze seguono l’ordine container → immagine → volume, quindi rimuovile con cautela.
5-5. Cause comuni di errori
● Errori di permesso
Got permission denied while trying to connect to the Docker daemon socket
→ L’utente non è stato aggiunto al gruppo docker
● Demone Docker non in esecuzione
Cannot connect to the Docker daemon at unix:///var/run/docker.sock
→ Avvia Docker con systemctl start docker
● Problemi di rete che impediscono il download delle immagini
→ Controlla le impostazioni del proxy, la configurazione DNS o eventuali restrizioni di rete
● Pacchetto legacy docker.io ancora installato
→ Disinstallalo completamente e reinstalla Docker dal repository ufficiale
6. Installazione e utilizzo di Docker Compose
Uno strumento essenziale per lavorare con Docker su larga scala è Docker Compose.
Le moderne applicazioni web spesso consistono in più componenti, come database, cache, worker e server web. Gestirli singolarmente con i comandi docker run diventa rapidamente poco pratico.
Docker Compose ti consente di definire più configurazioni di container in un unico file e gestirle insieme, rendendolo uno degli strumenti più usati nello sviluppo reale.
6-1. Verifica dell’installazione di Docker Compose V2
Quando Docker viene installato dal repository ufficiale, Docker Compose viene installato automaticamente come plugin.
Verifica l’installazione con il comando seguente:
docker compose version
Se installato correttamente, dovresti vedere un output simile a:
Docker Compose version v2.x.x
Se vedi un errore come docker: 'compose' is not a docker command, installa il plugin manualmente:
sudo apt install docker-compose-plugin
6-2. Vantaggi di Docker Compose
I principali vantaggi di Docker Compose includono:
- Gestione unificata di più container (avvio, arresto, riavvio)
- Configurazione come codice, che garantisce ambienti riproducibili
- Condivisione facile di configurazioni per applicazioni, API e database
- Avvio di ambienti di sviluppo con un singolo
docker compose up
Questo rende Docker Compose quasi indispensabile per lo sviluppo di applicazioni.
6-3. Struttura Base di un File di Configurazione Compose
Docker Compose utilizza un file chiamato docker-compose.yml (o compose.yaml) per definire i servizi.
Come esempio minimo, crea una configurazione semplice che avvia Nginx.
services:
web:
image: nginx:latest
ports:
- "8080:80"
Esegui il seguente comando nella directory contenente il file:
docker compose up -d
Nginx si avvierà in background. Accedi a http://localhost:8080 nel tuo browser per confermare.
6-4. Esempio: Configurazione Multi-Container (Web + Database)
Il vero potere di Compose emerge quando si gestiscono più container contemporaneamente.
Ad esempio, eseguire un’applicazione web insieme a MySQL può essere configurato come segue:
services:
app:
build: .
ports:
- "3000:3000"
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- db-data:/var/lib/mysql
volumes:
db-data:
Spiegazione:
depends_ongarantisce che il database si avvii prima dell’applicazionevolumespersistono i dati del database- Più servizi sono gestiti all’interno di un singolo file YAML
Si tratta di un pattern altamente pratico per gli ambienti di sviluppo.
6-5. Comandi Docker Compose Comuni
Questi comandi sono utili da memorizzare:
| Command | Description |
|---|---|
docker compose up -d | Start containers in the background |
docker compose down | Stop and remove containers and networks |
docker compose build | Build images using Dockerfile |
docker compose ps | List containers managed by Compose |
docker compose logs -f | View logs (optionally per service) |
L’uso di Compose ti permette di ricreare ambienti identici ripetutamente, rendendolo ideale per lo sviluppo in team.
6-6. Casi d’Uso Raccomandati per Compose nello Sviluppo
- Configurazione di ambienti locali con un solo comando
- Test in ambienti vicini alla produzione
- Avvio di servizi combinati come database, cache e code di messaggi
- Persistenza dei dati con volumi
- Gestione della configurazione con variabili d’ambiente
.env - Supporto per architetture di microservizi complesse
Una volta che ti sarai abituato a Docker e Compose, il tempo di configurazione dell’ambiente si ridurrà drasticamente,
migliorando significativamente l’efficienza dello sviluppo.
7. Considerazioni sulla Sicurezza e Operative
Docker è uno strumento estremamente potente e comodo, ma “essere containerizzato” non significa automaticamente “sicuro”.
Quando usi Docker regolarmente su Ubuntu, ci sono diversi punti importanti di sicurezza e operativi che dovresti comprendere.
Questa sezione organizza le conoscenze essenziali per operare Docker in modo sicuro e stabile, in un modo facile da capire anche per i principianti.
7-1. Il Gruppo Docker Ha Privilegi “Effettivamente Root”
Il gruppo docker configurato in precedenza concede in realtà privilegi molto forti.
Gli utenti appartenenti al gruppo docker possono operare sul sistema operativo host tramite il socket Docker, che è equivalente a un accesso a livello root.
● Punti Chiave da Conoscere
- Non aggiungere utenti arbitrari al gruppo docker su server condivisi
- Comprendi le implicazioni, non solo la comodità di “nessun sudo richiesto”
- Nelle organizzazioni con politiche di sicurezza rigorose, potrebbe essere necessario l’approvazione dell’amministratore
Questo raramente è un problema su macchine Ubuntu personali o PC di sviluppo, ma è richiesta una valutazione attenta sui server di produzione.
7-2. Considerare Rootless Docker (Opzione Avanzata)
Docker fornisce una funzionalità chiamata modalità rootless,
che permette al demone Docker di eseguire sotto un account utente regolare invece che root.
Vantaggi:
- Riduce significativamente il rischio di privilegi del sistema operativo host
- Consente un utilizzo più sicuro di Docker in ambienti con requisiti di sicurezza rigorosi
Svantaggi:
- Alcune funzionalità di rete sono limitate
- La configurazione è più complessa per i principianti
- Il comportamento può differire da Docker standard
La modalità rootless non è necessaria per la maggior parte dei casi d’uso di sviluppo,
ma può essere un’opzione valida in ambienti enterprise o focalizzati sulla conformità.
7-3. Pulizia di Immagini e Container Non Utilizzati
Nel tempo, Docker può consumare una grande quantità di spazio su disco senza che te ne accorga.
Container, immagini e volumi non utilizzati possono accumularsi e superare facilmente i 100GB.

● Comandi per rimuovere risorse non utilizzate
Rimozione di immagini non utilizzate
docker image prune
Rimozione di container e reti insieme
docker system prune
Pulizia aggressiva (usare con cautela)
docker system prune -a
L’opzione -a rimuove tutte le immagini non utilizzate, quindi usala con attenzione.
7-4. Evitare l’Uso del Tag “latest” in Produzione
Sebbene tag come nginx:latest siano comodi durante lo sviluppo, non sono raccomandati per l’uso in produzione.
Motivi:
- La versione esatta dietro
latestnon è garantita - Aggiornamenti inaspettati possono causare fallimenti in runtime
- La perdita di riproducibilità porta a deployment instabili
Approccio raccomandato: Fissare le versioni esplicitamente
Esempio:
image: nginx:1.25
La versionatura esplicita è una regola fondamentale per gli ambienti di produzione.
7-5. Usare Immagini Base Ufficiali nei Dockerfile
Quando crei Dockerfile, segui queste linee guida:
- Preferire immagini ufficiali (immagini library)
- Evitare immagini mantenute da autori sconosciuti o non fidati
- Quando usi immagini OS leggere come Alpine, verifica lo stato di supporto per le vulnerabilità
Le immagini non fidate possono contenere malware.
Anche negli ambienti di sviluppo, evitali ogni volta che possibile.
7-6. Essere Attenti all’Esposizione di Rete e Porte
Quando i container espongono porte sul sistema operativo host,
possono diventare accessibili dall’esterno del sistema.
Precauzioni:
- Evitare mapping
-p 80:80non necessari - Per uso locale, bind solo a localhost, ad es.
-p 127.0.0.1:8080:80 - Combinare con impostazioni firewall come UFW
- Per produzione, usa un reverse proxy (come Nginx) per una migliore sicurezza
La gestione delle porte è particolarmente critica su server VPS o Ubuntu basati su cloud.
7-7. Gestione dei Log Durante i Fallimenti
I log di Docker possono essere visualizzati con il seguente comando:
docker logs <container-name>
Grandi volumi di log possono consumare spazio su disco rapidamente,
quindi considera di configurare log driver e rotazione dei log.
8. Problemi Comuni e Risoluzione dei Problemi
Sebbene Docker sia uno strumento potente, errori inaspettati possono verificarsi su Ubuntu a causa di differenze ambientali o errori di configurazione.
Questa sezione riassume problemi comuni e le loro soluzioni, dal livello principiante a intermedio.
8-1. Impossibile Connettersi al Docker Daemon
● Messaggio di errore
Cannot connect to the Docker daemon at unix:///var/run/docker.sock.
● Cause e soluzioni
- Il daemon Docker non è in esecuzione :
sudo systemctl start docker - Modifiche al gruppo docker non applicate : Esci e rientra, o esegui
newgrp docker - Problema di permesso con /var/run/docker.sock : Assicurati che l’utente appartenga al gruppo docker
8-2. Errori di Permesso Negato
● Errore tipico
Got permission denied while trying to connect to the Docker daemon socket
● Soluzione
La causa è quasi sempre la configurazione mancante del gruppo docker.
sudo usermod -aG docker $USER
Poi esci e rientra.
8-3. Errori GPG Durante l’Aggiunta del Repository APT
● Esempi di errore
NO_PUBKEY XXXXXXXX
o
The following signatures couldn't be verified
● Cause e correzioni
- La chiave GPG non è stata registrata correttamente
- curl ha fallito a causa di restrizioni di rete
Ri-registra la chiave con:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Poi esegui di nuovo sudo apt update.
8-4. Conflitti di binding della porta
● Esempio di errore
Bind for 0.0.0.0:80 failed: port is already allocated.
● Cause
- La porta è già in uso da un altro processo sull’host
- Un altro contenitore Docker sta usando la stessa porta
● Soluzioni
Verifica quale processo sta usando la porta:
sudo lsof -i -P -n | grep :80
Verifica i contenitori in esecuzione:
docker ps
Modifica la mappatura della porta:
-p 8080:80
8-5. Errori di download dell’immagine
● Cause comuni
- Restrizioni di rete (ambienti aziendali)
- Problemi di configurazione DNS
- Accesso bloccato a Docker Hub
● Soluzioni
- Modifica i server DNS (es. 1.1.1.1 o 8.8.8.8)
- Verifica la configurazione del proxy
- Usa una VPN se richiesto dall’ambiente
8-6. Errori di esaurimento dello spazio su disco
● Messaggio tipico
no space left on device
● Risoluzione
Rimuovi le risorse inutilizzate:
docker system prune -a
Revisiona immagini, contenitori e volumi:
docker images
docker ps -a
docker volume ls
L’esaurimento dello spazio su disco è uno dei problemi operativi Docker più comuni.



