Perché Docker
Docker permette di isolare ogni servizio in un container leggero, con dipendenze versionate e ambiente riproducibile. Sostituisce installazioni "a tappeto" sul server con setup dichiarativi via docker-compose.yml.
Installazione del repo ufficiale
I pacchetti dei repository Ubuntu sono spesso vecchi. Aggiungiamo il repo ufficiale Docker:
sudo apt update sudo apt install -y ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \ -o /etc/apt/keyrings/docker.asc sudo 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" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io \ docker-buildx-plugin docker-compose-plugin
Permessi per il tuo utente
Senza sudo ogni volta:
sudo usermod -aG docker $USER newgrp docker
Attenzione: il gruppo docker equivale a root. Aggiungi solo utenti fidati.
Verifica
docker run --rm hello-world docker compose version
Primo stack con Compose
Crea ~/stacks/nginx-demo/compose.yml:
services:
web:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html:ro
restart: unless-stopped
Avvia:
cd ~/stacks/nginx-demo mkdir html && echo "Hello from container" > html/index.html docker compose up -d
Apri http://server:8080. Per fermare e rimuovere: docker compose down.
Backup dei volumi
I volumi nominati vivono in /var/lib/docker/volumes/. Per backupparli senza fermare il container:
docker run --rm \ -v nome_volume:/data:ro \ -v $(pwd):/backup \ alpine tar czf /backup/volume.tar.gz -C /data .
Pulizia periodica
docker system df docker system prune -a --volumes
Libera spazio rimuovendo immagini, container fermi e volumi orfani. Su un server di produzione fai prima un docker images per vedere cosa stai cancellando.