Installare Docker su Linux: guida per Ubuntu, Debian, RHEL | INTROSERV
EUR
european

EUR

usa

USD

Italy It
Ex. VAT Ex. VAT 0%

Installare Docker sulle distribuzioni Linux più diffuse: guida all'installazione di Docker su Linux

Livello: Intermedio
Tempo stimato: ~15 minuti
Obiettivo: Configurare un ambiente sicuro e decentralizzato installando Docker per ospitare in autonomia (self-hosting) servizi personali come Nextcloud, Bitwarden e Matrix.

Introduzione

Ospitare i propri servizi «cloud» garantisce privacy e piena proprietà dei dati. Per distribuire servizi come Nextcloud (archiviazione di file), Bitwarden (gestione delle password) o Matrix (comunicazione sicura) senza dover gestire complesse dipendenze a livello di host, servono ambienti isolati. In questa guida vedremo come installare Docker su Linux per costruire una base di self-hosting solida e riproducibile. Che serva una configurazione completa di Docker su Linux per un singolo server o per un'intera flotta, ogni passaggio seguente si applica a Ubuntu, Debian e alle distribuzioni compatibili con RHEL. Al termine di questa guida all'installazione di Docker su Linux si avrà un ambiente pronto per la produzione, configurato con impostazioni di sicurezza predefinite conformi alle best practice.

Terminologia

Prima di procedere, assicuratevi di comprendere questi concetti fondamentali:

  • Docker: una piattaforma per sviluppare, distribuire ed eseguire applicazioni in ambienti isolati.
  • Docker Engine: la tecnologia client-server principale che crea ed esegue i container.
  • Container: un componente eseguibile standardizzato che combina il codice sorgente di un'applicazione con le librerie del sistema operativo e le dipendenze necessarie per eseguirla.
  • Immagine (Image): un modello di sola lettura con le istruzioni per creare un container.
  • Demone Docker (Docker daemon): il servizio in background in esecuzione sull'host che gestisce la creazione, l'esecuzione e la distribuzione dei container.
  • Docker CLI: l'interfaccia a riga di comando usata per interagire con il demone.
  • Docker Hub: un registry pubblico gestito da Docker per trovare e condividere immagini di container.
  • Registry: un sistema di archiviazione e distribuzione delle immagini dei container.
  • Installazione: il processo che rende i programmi pronti per l'esecuzione.
  • Gestore di pacchetti: uno strumento software che automatizza l'installazione, l'aggiornamento, la configurazione e la rimozione dei programmi.
  • Repository: una posizione centrale in cui vengono archiviati e mantenuti i pacchetti software.
  • Repository ufficiale di Docker: la fonte attendibile gestita da Docker per ottenere pacchetti software stabili.
  • Pacchetto: un archivio di file compresso che contiene tutti i file di una specifica applicazione.
  • Dipendenza: un programma o una libreria richiesti da un altro programma per funzionare correttamente.
  • Versione stabile (Stable release): una versione del software sottoposta a test approfonditi e considerata affidabile per l'uso in produzione.
  • Versione: uno stato univoco del software che riflette le sue specifiche funzionalità e correzioni.

Prerequisiti

Prima di iniziare, assicurarsi che siano soddisfatte le seguenti condizioni:

  • Sistema operativo: Ubuntu 20.04/22.04/24.04 LTS, Debian 11/12/13 o compatibile con RHEL (AlmaLinux, Rocky, RHEL) 8/9/10
  • Accesso: accesso sudo o root al server
  • Conoscenze richieste: buona padronanza della riga di comando di Linux

Passaggio 1: Configurare il repository di Docker

Per ottenere la versione più recente, sicura e stabile, utilizzare sempre il repository ufficiale di Docker anziché i repository predefiniti del sistema operativo.

Per Ubuntu:

Per prima cosa, aggiornare l'indice del gestore di pacchetti di Linux e installare i pacchetti necessari per consentire ad apt di usare un repository tramite HTTPS:

sudo apt update sudo apt install ca-certificates curl gnupg lsb-release

Aggiungere la chiave GPG ufficiale di Docker:

sudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Configurare il repository stabile:

echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Per Debian:

I passaggi per installare Docker su Debian ricalcano il flusso di Ubuntu, ma puntano all'URL del repository specifico per Debian. Per prima cosa, aggiornare l'indice del gestore di pacchetti di Linux e installare i pacchetti necessari:

sudo apt update sudo apt install ca-certificates curl gnupg lsb-release

Aggiungere la chiave GPG ufficiale di Docker:

sudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Configurare il repository stabile:

echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/debian $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Per sistemi compatibili con RHEL (AlmaLinux, Rocky, RHEL):

Installare il pacchetto yum-utils e configurare il repository stabile:

sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo

Info

Docker pubblica i pacchetti per tutte le distribuzioni compatibili con RHEL (incluse AlmaLinux e Rocky Linux) sotto il percorso di repository centos. L'uso di questo URL è previsto e pienamente supportato.

Risultato: Il repository di Docker è ora aggiunto al sistema, consentendo al gestore di pacchetti di recuperare i pacchetti Docker più recenti.

Passaggio 2: Installare Docker su Ubuntu e Debian

Con il repository di Docker configurato, procedere con l'installazione di Docker Engine su Ubuntu (o Debian: i comandi sono identici). Questo passaggio vale per entrambe le distribuzioni.

Per prima cosa, rimuovere eventuali pacchetti in conflitto forniti dai repository del sistema operativo:

sudo apt remove docker.io podman-docker containerd runc

Aggiornare nuovamente l'indice dei pacchetti di apt e usare il gestore di pacchetti di Linux per installare i componenti necessari:

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

Risultato: Il comando viene eseguito e recupera dal repository di Docker i pacchetti e tutte le dipendenze necessarie. Il gestore di pacchetti dovrebbe completare l'installazione di Docker Engine senza errori.

Info

docker-ce indica Docker Community Edition, la versione gratuita ideale per chi fa self-hosting.

Passaggio 3: Installare Docker su sistemi compatibili con RHEL (AlmaLinux, Rocky, RHEL)

Sui sistemi basati su RHEL, usare yum per installare Docker Engine.

Per prima cosa, rimuovere eventuali pacchetti in conflitto forniti dai repository del sistema operativo:

sudo yum remove docker docker-client docker-client-latest docker-common \ docker-latest docker-latest-logrotate docker-logrotate docker-engine \ podman runc

Eseguire il comando seguente:

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin

Risultato: Il gestore di pacchetti installa i pacchetti necessari. Verrà richiesto di accettare la chiave GPG (a meno che non si passi il flag -y); confermarla. Al termine comparirà un messaggio di successo.

Passaggio 4: Verifica dell'installazione di Docker Engine

Dopo l'installazione, il comportamento del demone Docker varia a seconda della distribuzione. Su Ubuntu e Debian, docker.service si avvia automaticamente al termine dell'installazione. Sulle distribuzioni della famiglia RHEL, no.

Warning

Solo famiglia RHEL: se il processo di installazione ha aggiornato il kernel (ad esempio tramite una dipendenza kernel-core), riavviare il server prima di avviare il servizio Docker:

sudo reboot

Saltare questo passaggio può far fallire systemctl start docker con errori relativi a br_netfilter / addrtype, perché il kernel in esecuzione non corrisponde più ai moduli installati.

Quando il server è in esecuzione con il kernel aggiornato, avviare e abilitare il servizio. I comandi seguenti sono idempotenti e sicuri da eseguire su qualsiasi sistema:

sudo systemctl start docker sudo systemctl enable docker

Risultato: Il demone Docker si avvia e il sistema crea un collegamento simbolico per assicurarne l'avvio automatico a ogni riavvio.

Verificare la riuscita dell'installazione di Docker Engine eseguendo l'immagine hello-world:

sudo docker run hello-world

Risultato: La Docker CLI contatta il demone Docker, scarica l'immagine hello-world da Docker Hub ed esegue un container. Nel terminale dovrebbe comparire il messaggio «Hello from Docker!».

Passaggio 5: Operazioni successive all'installazione di Docker

Per impostazione predefinita, l'esecuzione dei comandi Docker richiede sudo. Per eseguirli come utente non root, è necessario aggiungere il proprio utente al gruppo docker. Queste sono le operazioni post-installazione di Docker essenziali per gestire comodamente la propria infrastruttura self-hosted.

Creare il gruppo docker (se non esiste già):

getent group docker || sudo groupadd docker

Aggiungere il proprio utente al gruppo docker:

sudo usermod -aG docker $USER

Risultato: L'utente è stato aggiunto al gruppo. Perché le modifiche abbiano effetto, è necessario disconnettersi e riconnettersi, oppure attivare la nuova appartenenza al gruppo nella sessione corrente:

newgrp docker

Info

newgrp docker crea una nuova shell con l'appartenenza ai gruppi aggiornata. Qualsiasi comando docker eseguito in seguito funzionerà senza sudo, ma solo all'interno di questa nuova shell. L'apertura di un altro terminale richiede comunque una nuova connessione completa.

Warning

l'appartenenza al gruppo docker concede privilegi equivalenti all'accesso root sull'host. Negli ambienti self-hosted che privilegiano la sicurezza, valutare seriamente l'esecuzione di Docker in modalità rootless (vedere il Passaggio 6).

Dopo aver eseguito newgrp docker (o dopo essersi disconnessi e riconnessi), verificare la configurazione eseguendo un comando senza sudo:

docker run hello-world

Risultato: Dovrebbe comparire di nuovo il messaggio «Hello from Docker!», a conferma che le operazioni post-installazione di Docker sono andate a buon fine.

Alternativa: installazione rapida tramite script di convenienza

Per ambienti di test o sviluppo, Docker mette a disposizione uno script di convenienza.

Warning

Questo metodo non è consigliato per la produzione. Viene eseguito senza blocco della versione (version pinning), esegue un aggiornamento incondizionato se Docker è già installato e installa tutte le dipendenze senza verifica.

Si consiglia di scaricare lo script e di esaminarlo prima dell'esecuzione:

curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh

Passaggio 6 (facoltativo): Eseguire Docker in modalità rootless

Negli ambienti self-hosted, eseguire Docker in modalità rootless aumenta la sicurezza, perché il demone Docker e i container vengono eseguiti come utente non root.

6.1 Prerequisiti

Per prima cosa, arrestare e disabilitare il servizio e il socket Docker a livello di sistema, quindi rimuovere il file del socket:

sudo systemctl stop docker.service docker.socket sudo systemctl disable docker.service docker.socket sudo rm -f /var/run/docker.sock

Verificare che per l'utente siano configurati subuid e subgid (di solito impostati automaticamente):

cat /etc/subuid cat /etc/subgid

Abilitare il lingering per l'utente, in modo che il demone possa avviarsi all'avvio del sistema:

sudo loginctl enable-linger $USER

6.2 Installare i pacchetti aggiuntivi

Per Ubuntu/Debian:

sudo apt install docker-ce-rootless-extras uidmap dbus-user-session

Per AlmaLinux/RHEL (shadow-utils fornisce uidmap ed è di solito preinstallato):

sudo yum install docker-ce-rootless-extras

6.3 Installare il demone rootless

Eseguire lo script di installazione da una sessione di login completa dell'utente di destinazione (non da sudo su né da una shell SSH senza login). Se ci si trova in un contesto senza login, esportare prima le variabili necessarie:

export XDG_RUNTIME_DIR=/run/user/$(id -u) export DBUS_SESSION_BUS_ADDRESS=unix:path=$XDG_RUNTIME_DIR/bus

Quindi eseguire lo script di installazione:

dockerd-rootless-setuptool.sh install

Info

La prima esecuzione dello script di installazione subito dopo l'abilitazione del lingering potrebbe essere instabile. Se il demone non si avvia, è sufficiente rieseguire lo script di installazione.

6.4 Configurare le variabili d'ambiente

Aggiungere le seguenti variabili al file di configurazione della shell (ad es. ~/.bashrc):

export PATH=/usr/bin:$PATH export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock

Caricare il file (source) o riavviare la shell per applicare le modifiche.

6.5 Limitazioni della modalità rootless

  • Non è possibile pubblicare porte < 1024 (Docker offre soluzioni alternative come setcap, l'inoltro delle porte con slirp4netns o il routing).
  • Nessun supporto per --net=host.
  • La modalità Swarm e le reti overlay non sono supportate.
  • AppArmor non è supportato.
  • Il flag --privileged non concede l'accesso root a livello di host.
  • I dati sono archiviati in ~/.local/share/docker (da considerare per backup e quote).
  • Richiede cgroup v2.
  • Utilizza il driver di archiviazione overlayfs anziché overlay2.

Rollback

Se è necessario annullare l'installazione di Docker su Linux, sia essa una configurazione standard o rootless, seguire i passaggi seguenti nell'ordine indicato.

1. Rollback della modalità rootless (saltare se non era stata configurata):

Se è stata configurata la modalità rootless, annullare prima queste modifiche, prima di rimuovere i pacchetti:

dockerd-rootless-setuptool.sh uninstall rm -rf ~/.local/share/docker sudo loginctl disable-linger $USER

Info

La disinstallazione della modalità rootless eseguita dopo la rimozione (purge) dei pacchetti non riuscirà, perché lo script di installazione fa parte del pacchetto docker-ce-rootless-extras. Disinstallare sempre la modalità rootless mentre i pacchetti sono ancora presenti.

2. Rimuovere i pacchetti:

Debian/Ubuntu:

sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin docker-ce-rootless-extras sudo rm -rf /var/lib/docker /var/lib/containerd sudo rm -f /etc/apt/sources.list.d/docker.list /etc/apt/keyrings/docker.gpg

AlmaLinux/Rocky/RHEL:

sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin \ docker-compose-plugin docker-ce-rootless-extras sudo rm -rf /var/lib/docker /var/lib/containerd sudo rm -f /etc/yum.repos.d/docker-ce.repo

3. Rimuovere il gruppo:

sudo groupdel docker || true

Warning

La rimozione dei pacchetti non elimina automaticamente immagini, container, volumi o file di configurazione personalizzati. I comandi rm -rf eliminano in modo permanente queste directory di dati.

Conclusione

L'installazione di Docker su Linux è completata e verificata. La base è ora configurata in sicurezza. Potete procedere con la distribuzione dei container per i vostri strumenti self-hosted, mantenendo il pieno controllo sui file di Nextcloud, sulle cassaforti di Bitwarden e sulle comunicazioni di Matrix.

Versione del documento: 1.0
Ultimo aggiornamento: maggio 2026
Responsabile: Team di documentazione tecnica

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA