Docker ha cambiato il modo in cui installiamo e gestiamo i servizi su un server. Se hai mai passato un pomeriggio intero a litigare con dipendenze, versioni di PHP e configurazioni che si pestavano i piedi a vicenda, sai di cosa parlo.

In questa guida ti mostro come installare Docker Engine e Docker Compose sulle principali distribuzioni Linux: Debian, Fedora, RHEL, CentOS e Arch Linux. Partiamo da una rapida panoramica dei concetti base, per poi passare subito ai comandi.

Cos’è Docker?

Docker è una piattaforma open source che esegue applicazioni in ambienti isolati chiamati container. Ogni container include tutto il necessario per far girare un’app — software, librerie, configurazioni — senza toccare il sistema operativo principale.

Quattro concetti ti bastano per seguire questa guida:

  • Immagine: un modello pronto all’uso per creare un container (es. un server web, un database).
  • Container: un’istanza in esecuzione di un’immagine. La stessa immagine può generare più container indipendenti.
  • Volume: uno spazio di archiviazione persistente all’esterno del container, dove salvare database, configurazioni e file utente. Senza volumi, i dati spariscono insieme al container.
  • Network: una rete virtuale che permette ai container di comunicare tra loro senza esporli direttamente su Internet.

Quando un’applicazione è composta da più servizi (es. web + database), si usa Docker Compose: un file YAML (compose.yml) che definisce immagini, porte, volumi e variabili di tutti i container, e li avvia con un solo comando:

1
docker compose up -d

Detto questo, passiamo all’installazione.

Installazione di Docker su Linux

Vediamo quindi come installare Docker sulle principali distribuzioni Linux.

Debian e derivate

Prima di procedere è consigliato rimuovere eventuali versioni precedenti o pacchetti Docker installati tramite i repository della distribuzione.

Esegui sul terminale:

1
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt remove $pkg; done

Installa i pacchetti necessari:

1
2
3
sudo apt update

sudo apt install ca-certificates curl gnupg

Crea la directory per le chiavi GPG:

1
sudo install -m 0755 -d /etc/apt/keyrings

Scarica la chiave ufficiale Docker:

1
2
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release && echo "$ID")/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Imposta i permessi corretti:

1
sudo chmod a+r /etc/apt/keyrings/docker.gpg

Aggiungi il repository ufficiale Docker:

1
2
3
4
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/$(. /etc/os-release && echo "$ID") \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Aggiorna nuovamente i repository:

1
sudo apt update

Installa Docker Engine e Docker Compose confermando l’installazione quando richiesto:

1
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Red Hat e derivate

Questa procedura è valida per Fedora, Red Hat Enterprise Linux (RHEL), AlmaLinux, Rocky Linux e le relative distribuzioni derivate.

Prima di procedere rimuovi eventuali vecchie installazioni:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
sudo dnf remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine \
podman \
runc

Installa i pacchetti necessari:

1
sudo dnf -y install dnf-plugins-core

Aggiungi il repository ufficiale Docker.

Nota: Docker distribuisce un repository dedicato per Fedora e RHEL, mentre CentOS, AlmaLinux e Rocky Linux utilizzano il repository compatibile con CentOS.

Per Fedora:

1
sudo dnf config-manager addrepo --from-repofile https://download.docker.com/linux/fedora/docker-ce.repo

Per RHEL:

1
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo

Per CentOS:

1
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Installa Docker Engine e Docker Compose:

1
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Arch Linux e derivate

Su Arch Linux Docker è disponibile direttamente nei repository ufficiali della distribuzione.

Digita sul terminale:

1
sudo pacman -S docker docker-compose

Configurazione post installazione

Abilita Docker all’avvio del sistema ed avvialo:

1
sudo systemctl enable --now docker

Verifica che il servizio sia correttamente in esecuzione:

1
systemctl status docker

Stato del servizio Docker attivo su Linux

Utilizzare Docker senza “sudo”

Per impostazione predefinita Docker richiede privilegi amministrativi e i comandi devono essere eseguiti tramite sudo. Per permettere al tuo utente di eseguire i comandi Docker senza utilizzare ogni volta sudo, aggiungilo al gruppo docker:

1
sudo usermod -aG docker $USER

⚠️ Attenzione: L’appartenenza al gruppo docker equivale, nella pratica, ad avere privilegi amministrativi sul sistema. Aggiungi solamente utenti di cui ti fidi.

Per rendere effettive le modifiche è necessario effettuare il logout dalla sessione corrente:

1
exit

Dopo aver effettuato nuovamente l’accesso, verifica che Docker sia stato installato correttamente eseguendo:

1
docker version && docker compose version

L’output dovrebbe essere simile al seguente:

Verifica versione Docker e Docker Compose

Container di prova

Esegui il classico container di test fornito da Docker:

1
docker run --rm hello-world

Se tutto è andato a buon fine, Docker scaricherà automaticamente l’immagine hello-world, creerà un container temporaneo e mostrerà un messaggio di conferma.

Output del container hello-world di Docker

Da questo momento potrai installare ed eseguire qualsiasi applicazione distribuita tramite Docker e Docker Compose.

In sintesi

Docker è uno di quegli strumenti che, una volta provati, è difficile abbandonare: isola i servizi, semplifica gli aggiornamenti, elimina i conflitti tra dipendenze e rende il server molto più ordinato. In questa guida abbiamo visto i concetti base — immagini, container, volumi e network — e installato Docker Engine e Docker Compose su Debian, Fedora, RHEL, CentOS e Arch Linux, con la configurazione per l’uso quotidiano senza sudo.

Il passo successivo è mettere Docker al lavoro con un servizio reale. Se non sai da dove iniziare, tieni d’occhio il blog: nelle prossime guide vedremo come installare i primi servizi self-hosted proprio con Docker Compose.