HELPER VPS

Installare Docker su VPS: Ubuntu, Debian, AlmaLinux e Compose

Installando dal repository ufficiale di Docker ottieni l'ultima versione di Docker Engine e il plugin Compose, e gli aggiornamenti successivi si fanno con un semplice aggiornamento di sistema. Qui trovi in ordine i comandi per sistema operativo e le impostazioni da fare dopo l'installazione.

Il metodo più rapido: creare il server con l'immagine Docker

Se crei un nuovo server, la cosa più rapida è scegliere Docker nell'elenco delle immagini. Parti su Ubuntu 24.04 LTS con Docker Engine e Docker Compose già installati e appena accedi esegui docker compose up. Presentazione dell'app e dimensioni consigliate sono nella pagina VPS Docker.

Se vuoi aggiungere Docker a un server già in uso, o usare un altro sistema operativo come Debian o AlmaLinux, installalo tu seguendo i passi qui sotto. Tutti i comandi presuppongono l'accesso come root. Se hai effettuato l'accesso come utente normale, aggiungi sudo davanti ai comandi.

Cosa verificare prima dell'installazione

Docker funziona su server di qualsiasi dimensione. Per progetti personali che eseguono pochi container, il più piccolo piano generale da 12GB è sufficiente; per eseguire insieme un database, un web server e una cache, 24GB o più ti danno spazio. Se scarichi e costruisci spesso immagini, un VPS NVMe con un disco veloce fa una differenza evidente.

Se ci sono vecchi pacchetti Docker dei repository del sistema operativo, eliminali prima per non mescolarli con i pacchetti ufficiali. I pacchetti non installati vengono saltati, quindi puoi eseguire il comando così com'è.

Ubuntu, Debian
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do apt remove -y $pkg; done

Installare Docker su Ubuntu 24.04

Passo 1. Aggiungi la chiave e l'indirizzo del repository

Ubuntu 24.04
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list

Passo 2. Installa Docker Engine e Compose

Ubuntu 24.04
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Al termine dell'installazione il servizio Docker si avvia da solo e si riavvia anche quando riavvii il server. Gli stessi comandi funzionano anche su Ubuntu 22.04 e 26.04. Il nome di versione nell'indirizzo del repository viene letto in automatico da /etc/os-release.

Installare Docker su Debian 13

Su Debian i passi sono gli stessi di Ubuntu, cambia solo l'indirizzo del repository in linux/debian. Gli stessi comandi valgono anche per Debian 12.

Debian 13
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Installare Docker su AlmaLinux 10

AlmaLinux e Rocky Linux usano il repository RHEL di Docker. Prima rimuovi Podman, incluso di default, per evitare sovrapposizioni, poi installa. Gli stessi comandi valgono anche per AlmaLinux 9 e Rocky Linux 9 e 10.

AlmaLinux 10
dnf remove -y podman buildah runc
dnf -y install dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker

Alla prima installazione, se ti chiede se accettare la chiave di firma del repository, premi y. Sulla famiglia RHEL il servizio non si avvia da solo dopo l'installazione, quindi con l'ultima riga systemctl enable --now docker lo avvii subito e lo fai partire anche all'avvio.

Verifica dell'installazione e primo container

Avvia una volta il container di prova con il comando qui sotto. Se compare un messaggio che inizia con Hello from Docker, motore, download delle immagini ed esecuzione dei container funzionano. Con --rm il container viene rimosso subito al termine dell'esecuzione.

Terminale
docker run --rm hello-world
docker compose version

Se vuoi usare Docker anche con un utente normale, aggiungilo al gruppo docker e accedi di nuovo. Il gruppo docker ha gli stessi permessi di root, quindi aggiungi solo utenti fidati.

Terminale
usermod -aG docker nome-utente

Pubblicare servizi con Docker Compose

Compose è un modo per scrivere la configurazione dei container in un solo file YAML e avviarli con una riga. Anche se sposti o ricrei il server, con lo stesso file ritrovi lo stesso ambiente. Per esempio, un file che avvia un solo web server Nginx è fatto così.

Terminale
mkdir -p /opt/web && cd /opt/web
cat > compose.yaml <<'EOF'
services:
  web:
    image: nginx:stable
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
    restart: unless-stopped
EOF
docker compose up -d

Aprendo http://YOUR_SERVER_IP nel browser compare la pagina di Nginx. Se metti un index.html nella cartella html, viene mostrato quel file. Per i comandi più usati bastano questi quattro.

  • docker compose ps: mostra i container in esecuzione e le loro porte.
  • docker compose logs -f: segue i log in tempo reale. Esci con Ctrl+C.
  • docker compose pull && docker compose up -d: scarica le nuove immagini e aggiorna i container alla nuova versione.
  • docker compose down: ferma e rimuove i container. I dati nei volumi restano intatti.

Con restart: unless-stopped, quando riavvii il server anche i container ripartono da soli. Restano fermi solo quelli che hai fermato tu.

Firewall e pubblicazione delle porte

Docker apre le porte pubblicate con ports: inserendole direttamente nelle regole del firewall (iptables). Quindi anche le porte non consentite in ufw, se scritte in ports:, sono raggiungibili dall'esterno. Database e pannelli di amministrazione che non devono essere visibili all'esterno, legati solo a 127.0.0.1 come qui sotto, sono raggiungibili solo dall'interno del server.

compose.yaml
    ports:
      - "127.0.0.1:5432:5432"

Per i servizi web conviene pubblicare solo le porte 80 e 443 e far comunicare gli altri servizi tra loro per nome all'interno della stessa rete Compose. Per il firewall di base dell'intero server, segui la guida al firewall di base e apri solo SSH, HTTP e HTTPS.

Gestione di log e disco

Se non imposti nulla, i log dei container si accumulano senza limiti. Indicando il driver di log local in /etc/docker/daemon.json come qui sotto, i log vengono compressi e conservati solo fino a una dimensione stabilita. Dopo aver salvato, esegui systemctl restart docker: si applica ai container creati da quel momento.

/etc/docker/daemon.json
{
  "log-driver": "local"
}

Anche immagini inutilizzate e container fermi occupano disco. Controlla lo spazio usato con docker system df e rimuovi le immagini non in uso con docker image prune -a. Quando i dati crescono, puoi collegare al server un disco a blocchi NVMe e usarlo come cartella dati di Docker.

Proteggere i dati e passi successivi

I container si possono eliminare e ricreare in qualsiasi momento, ma i dati nei volumi no. Salva regolarmente dump dei database e proteggi l'intero server con backup automatici o snapshot. Come fare è spiegato nella guida a backup e snapshot.

Il file Compose per pubblicare WordPress con Docker è nella guida all'installazione di WordPress. Se vuoi distribuire più app da un'interfaccia con certificati HTTPS automatici, crea il server con l'immagine Coolify o Dokploy. Le dimensioni adatte all'uso con soli container sono nella pagina VPS per container.

Guide correlate

Impostazioni utili da completare dopo questa guida.

Tutte le guide