Come installare Docker su Ubuntu: Guida completa per principianti (Metodo ufficiale)

目次

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 docker senza sudo
  • 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:

  1. Installare tramite il repository ufficiale di Docker (Consigliato)
  2. Usare lo script di installazione get.docker.com (Veloce e semplice)
  3. Scaricare manualmente e installare i pacchetti .deb di 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
  • --dearmor converte 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 (come jammy o focal )
  • 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_CODENAME sia 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 run senza sudo
  • 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:

  1. Scarica l’immagine da Docker Hub se non è presente localmente
  2. Avvia un container dall’immagine
  3. 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_on garantisce che il database si avvii prima dell’applicazione
  • volumes persistono 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:

CommandDescription
docker compose up -dStart containers in the background
docker compose downStop and remove containers and networks
docker compose buildBuild images using Dockerfile
docker compose psList containers managed by Compose
docker compose logs -fView 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 latest non è 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:80 non 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

  1. Il daemon Docker non è in esecuzione : sudo systemctl start docker
  2. Modifiche al gruppo docker non applicate : Esci e rientra, o esegui newgrp docker
  3. 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.

侍エンジニア塾