📦 Docker su Linux Nativo: Installazione & Hardening
::: info Questa guida descrive l’installazione del Docker Engine su distribuzioni basate su Debian/Ubuntu e le configurazioni di sicurezza necessarie per proteggere il demone da accessi non autorizzati e prevenire il consumo eccessivo di risorse. :::
1. Installazione Professionale (Official Repo)
Non utilizziamo i pacchetti standard delle distro (spesso obsoleti), ma il repository ufficiale Docker per garantire aggiornamenti di sicurezza tempestivi.
A. Pulizia e Prerequisiti
# Rimuovi vecchie versioni se presenti
sudo apt-get remove docker docker-engine docker.io containerd runc
# Aggiorna l'indice e installa i pacchetti per HTTPS
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
B. Configurazione Repository
# Aggiungi la chiave GPG ufficiale
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Configura 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
C. Installazione Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
2. Post-Installation Hardening
Di default, Docker richiede privilegi di root. Per una workstation di sviluppo, è necessario bilanciare sicurezza e usabilità.
Gestione Utente (Non-Root)
Aggiungi il tuo utente al gruppo docker per eseguire comandi senza sudo:
sudo usermod -aG docker $USER
Nota: Questa operazione concede privilegi equivalenti a root per quanto riguarda l’accesso al sistema tramite container. Utilizzare con consapevolezza.
Configurazione del Demone (daemon.json)
Per evitare che i log dei container saturino il disco fisso (causa n.1 di crash dei server), configuriamo la log rotation globale.
Crea o modifica /etc/docker/daemon.json:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"live-restore": true,
"no-new-privileges": true
}
- max-size: Limita ogni file di log a 10MB.
- live-restore: Permette ai container di restare attivi anche se il demone Docker viene riavviato o aggiornato.
📉 Architettura del Demone (Mermaid)
3. Comandi di Diagnostica Rapida
| Comando | Scopo |
|---|---|
docker info | Visualizza lo stato completo del motore e le policy attive. |
docker stats | Monitoraggio in tempo reale di CPU/RAM per container. |
docker system df | Analisi dell’occupazione disco (immagini, volumi, cache). |
docker system prune | Cleanup: Rimuove container fermi e reti inutilizzate. |
💡 Note dell’Ingegnere (Critical Thinking)
- UFW & Docker: Su Ubuntu, Docker manipola direttamente
iptables, scavalcando spesso le regole del firewall UFW. Se esponi porte (es.-p 80:80), il container sarà accessibile dall’esterno anche se UFW dice il contrario. - Storage Driver: Assicurati che Docker stia usando
overlay2(default su kernel moderni), che è il driver più efficiente per il layering delle immagini. - Rootless Mode: In ambienti ad altissima sicurezza, valuta l’installazione di Docker Rootless, che permette di eseguire l’intero motore senza privilegi di sistema (richiede configurazioni aggiuntive per le porte < 1024).
Tags: #Docker #Linux #Debian #Ubuntu #Security #SysAdmin*