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'è.
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do apt remove -y $pkg; doneInstallare Docker su Ubuntu 24.04
Passo 1. Aggiungi la chiave e l'indirizzo del repository
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.listPasso 2. Installa Docker Engine e Compose
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginAl 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.
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-pluginInstallare 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.
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 dockerAlla 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.
docker run --rm hello-world
docker compose versionSe 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.
usermod -aG docker nome-utentePubblicare 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ì.
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 -dAprendo 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.
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.
{
"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.
