Primi passi con Docker su un VPS
Scritto dal team ApexVPS • Ultimo aggiornamento: luglio 2026 • 8 min di lettura
Eseguire Docker su un VPS è il modo più rapido per passare da un box Ubuntu vuoto a un'app web funzionante, un database o un servizio self-hosted in pochi minuti. Invece di lottare con i pacchetti di sistema e le dipendenze in conflitto, estrai un'immagine pre-costruita e avvii un container. Questa guida per principianti ti accompagna attraverso l'installazione di Docker e Docker Compose su Ubuntu o Debian, i concetti fondamentali che ti servono, l'avvio del tuo primo container, la persistenza dei dati con i volumi e alcune nozioni di sicurezza di base per evitare spiacevoli sorprese.
Perché eseguire Docker su un VPS?
Un server privato virtuale ti offre accesso root completo e risorse dedicate, esattamente ciò che i container richiedono. Con Docker installato puoi eseguire molti servizi isolati fianco a fianco senza che interferiscano tra loro. Ogni container include le proprie librerie, quindi un'app Node, un database Postgres e un reverse proxy possono coesistere pulitamente su una sola macchina. Se il tuo obiettivo è ospitare app su un VPS — pensa a un cloud personale, un wiki o un server multimediale — Docker mantiene ogni servizio ordinato e riproducibile.
I container sono anche portabili. Lo stesso file Compose che gira sul tuo laptop gira sul server, eliminando il classico problema del "funziona sulla mia macchina". Ricostruire un servizio dopo un errore richiede secondi, non un pomeriggio a reinstallare pacchetti.
Concetti fondamentali in parole semplici
Prima di toccare la riga di comando, è utile conoscere quattro elementi costitutivi:
- Immagine — un modello di sola lettura che contiene un'applicazione e tutto ciò di cui ha bisogno per funzionare. Scarichi le immagini da un registro come Docker Hub. Pensala come a un'istantanea o a una classe.
- Container — un'istanza in esecuzione di un'immagine. Puoi avviare, fermare ed eliminare i container liberamente. Molti container possono girare dalla stessa immagine, come oggetti creati da una classe.
- Volume — archiviazione persistente che vive al di fuori del livello scrivibile di un container. I volumi sono il modo per mantenere al sicuro database e file caricati quando un container viene sostituito.
- Rete — una rete virtuale che consente ai container di comunicare tra loro per nome. Docker ne crea una automaticamente per ogni progetto Compose, così la tua app può raggiungere il suo database tramite un hostname amichevole.
Passaggio 1: Installa Docker su Ubuntu o Debian
Il modo più semplice e supportato ufficialmente per installare Docker Engine è lo script di convenienza. Connettiti al tuo server via SSH ed esegui:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Questo installa Docker Engine insieme al plugin Compose. Quando finisce, verifica le versioni:
docker --version
docker compose version
Per impostazione predefinita Docker richiede sudo. Per eseguirlo come utente normale, aggiungiti al gruppo docker e poi esci e rientra per rendere effettiva la modifica:
sudo usermod -aG docker $USER
Docker si avvia anche all'avvio del sistema sulla maggior parte dei sistemi. Se mai ne avessi bisogno, puoi abilitarlo manualmente:
sudo systemctl enable --now docker
Preferisci il metodo del repository di pacchetti o vuoi i dettagli completi per la tua distribuzione esatta? La documentazione ufficiale di installazione di Docker copre ogni opzione. Lo script di convenienza qui sopra è ideale per un nuovo VPS.
Passaggio 2: Esegui il tuo primo container
Prova l'installazione con l'immagine classica hello-world:
docker run hello-world
Docker scarica l'immagine, la esegue una volta e stampa un messaggio di conferma. Ora eseguiamo qualcosa che puoi davvero vedere. Questo comando avvia un server web Nginx in background e mappa la porta 8080 dell'host alla porta 80 del container:
docker run -d -p 8080:80 --name web nginx
Apri http://your-server-ip:8080 in un browser e dovresti vedere la pagina di benvenuto di Nginx. Alcuni flag che vale la pena conoscere:
-desegue il container in modalità distaccata, in background.-p 8080:80pubblica una porta comehost:container.--name webassegna al container un nome memorabile.
Controlla cosa è in esecuzione, poi ferma e rimuovi il container quando hai finito:
docker ps
docker stop web
docker rm web
Una manciata di comandi copre la maggior parte del lavoro quotidiano. docker images elenca le immagini che hai scaricato, docker logs web mostra l'output di un container per la risoluzione dei problemi e docker exec -it web bash apre una shell all'interno di un container in esecuzione per esplorarlo. Imparare questi cinque o sei comandi è sufficiente per gestire un piccolo server con sicurezza, e puoi cercare il resto quando ti serve.
Passaggio 3: Usa Docker Compose per app multi-container
Scrivere lunghi docker run comandi alla fine stanca. Docker Compose ti permette di descrivere l'intero stack in un unico file e avviarlo con un solo comando. Crea un file chiamato compose.yaml:
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- web-data:/usr/share/nginx/html
restart: unless-stopped
volumes:
web-data:
Dalla stessa directory, avvia tutto in background:
docker compose up -d
Compose crea automaticamente la rete, il volume nominato e il container per te. Utili compagni:
docker compose ps
docker compose logs -f
docker compose down
La policy restart: unless-stopped fa sì che il servizio riparta automaticamente dopo un riavvio o un crash — comodo per un server che non stai monitorando 24 ore su 24.
Passaggio 4: rendi i dati persistenti con i volumi
Questa è la parte in cui i principianti sbagliano più spesso. Tutto ciò che viene scritto nel filesystem di un container sparisce quando quel container viene rimosso o ricreato. Per conservare i dati, mettili in un volume. Ci sono due approcci comuni:
- Volumi nominati — gestiti da Docker, ideali per i database. L'esempio Compose qui sopra ne utilizza uno chiamato
web-data. - Bind mounts — mappano una cartella dell'host direttamente nel container, ad esempio
./config:/etc/app. Ottimi per file di configurazione che vuoi modificare a mano.
Ispeziona e gestisci i volumi dalla riga di comando:
docker volume ls
docker volume inspect web-data
Finché i tuoi percorsi importanti puntano a un volume, puoi eliminare e ricostruire i container tutto il giorno senza perdere un byte. Fai il backup della directory dei volumi insieme ai backup del server.
Passaggio 5: aggiorna immagini e container
Le immagini dei container ricevono aggiornamenti di sicurezza e funzionalità come qualsiasi software. Aggiornare uno stack Compose è una routine in due passaggi: scarica le immagini più recenti, poi ricrea i container.
docker compose pull
docker compose up -d
Poiché i tuoi dati vivono nei volumi, la ricreazione è sicura. Con il tempo, le immagini inutilizzate si accumulano e occupano spazio su disco. Puliscile ogni tanto:
docker image prune
Fissa versioni specifiche (ad esempio postgres:16 invece di latest) quando vuoi aggiornamenti prevedibili e ripetibili, invece di sorprese.
Sicurezza Docker di base per principianti
I container sono comodi, ma non sono un confine di sicurezza magico. Alcune buone abitudini ti tengono fuori dai guai:
- Esegui solo immagini di cui ti fidi. Preferisci immagini ufficiali o publisher noti. Non eseguire un'immagine casuale come root solo perché un tutorial te lo dice — un'immagine non fidata esegue codice sul tuo server.
- Rinuncia a root nei container. Molte immagini ufficiali supportano un utente non root, oppure puoi impostarne uno con l'istruzione
USERin un Dockerfile. Eseguire con un utente limitato riduce il raggio d'azione se un'app viene compromessa. - Pubblica solo le porte necessarie. Ogni flag
-papre una porta verso internet. Tieni i database sulla rete Docker interna ed esponi solo il frontend web. - Mantieni l'host aggiornato. La sicurezza Docker inizia con un server sicuro. Esegui
sudo apt update && sudo apt upgraderegolarmente e blocca l'accesso SSH.
Prima di esporre qualsiasi cosa pubblicamente, segui la nostra checklist complementare su come proteggere il tuo VPS nei primi 10 minuti — copre chiavi SSH, firewall e aggiornamenti automatici che si abbinano perfettamente a un host Docker.
Scegliere un VPS pronto per Docker
Docker funziona anche su hardware modesto, ma le risorse dedicate fanno la differenza quando impili più container. L'hosting condiviso e oversold significa che un vicino rumoroso può rallentare il tuo database nel momento peggiore. ApexVPS ti offre vCPU realmente dedicati, storage NVMe SSD e accesso root completo, così i tuoi container ottengono le prestazioni per cui paghi. Ogni piano supporta Ubuntu, Debian e altre distribuzioni popolari, e puoi inserire la tua chiave SSH al momento della registrazione.
Il checkout è solo in criptovaluta tramite OxaPay e accetta Bitcoin, Ethereum, USDT e oltre 30 criptovalute: niente carta di credito, niente conto bancario e nessun KYC. Fornisci un'email per ricevere i dettagli di accesso e basta. Confronta specifiche e regioni nella pagina prezzi di ApexVPS per trovare un piano adatto al tuo carico di lavoro containerizzato.
Domande frequenti
Mi serve molta RAM per eseguire Docker su un VPS?
No. Docker stesso è leggero e aggiunge poco overhead. Uno o due container girano comodamente con 2 GB di RAM, mentre 4 GB o più danno margine per database e diversi servizi contemporaneamente.
Si usa docker-compose o docker compose?
In un'installazione moderna, Compose è incluso come plugin, quindi il comando è docker compose con uno spazio. Il vecchio binario standalone docker-compose funziona ancora ma è in fase di dismissione: usa la versione plugin su un'installazione nuova.
Dove vengono salvati i miei dati quando un container viene eliminato?
Tutto ciò che viene scritto all'interno del container viene perso alla rimozione. Memorizza i dati importanti in un volume nominato o in un bind mount in modo che sopravvivano alla ricreazione del container. È così che database e upload restano al sicuro.
Posso pagare un VPS pronto per Docker con criptovaluta?
Sì. Il checkout di ApexVPS è solo criptovaluta tramite OxaPay e accetta Bitcoin, Ethereum, USDT e oltre 30 monete. La registrazione richiede solo un'email, senza carta di credito e senza verifica dell'identità.