Guida per installare e configurare Docker su Windows - WSL - Linux
Contesto
Docker è la piattaforma standard per creare, distribuire e eseguire applicazioni in container. Permette di isolare ambienti in modo riproducibile, eliminando il classico problema “funziona sul mio PC”. Questa guida copre tre scenari distinti: installazione nativa su Windows tramite Docker Desktop, integrazione con WSL 2 (Windows Subsystem for Linux), e installazione diretta su distribuzioni Linux (Ubuntu/Debian e Arch/Fedora).
Windows — Docker Desktop
Prerequisiti
- Windows 10 (build 19044+) o Windows 11
- Virtualizzazione abilitata nel BIOS (VT-x / AMD-V)
- WSL 2 installato e abilitato (raccomandato come backend)
Installazione
- Scarica Docker Desktop da https://www.docker.com/products/docker-desktop
- Esegui il file
.exee segui la procedura guidata - Seleziona “Use WSL 2 instead of Hyper-V” durante il setup
- Al termine, riavvia il sistema
- Avvia Docker Desktop dalla barra delle applicazioni
Configurazione post-installazione
Apri Docker Desktop → Settings:
- General: abilita “Start Docker Desktop when you log in”
- Resources > WSL Integration: abilita l’integrazione per le distro WSL che vuoi usare (es. Ubuntu)
- Docker Engine: puoi modificare il daemon JSON da qui
Verifica
Apri PowerShell o CMD:
docker --version
docker run hello-worldWSL 2 — Docker senza Docker Desktop
Se vuoi usare Docker direttamente da WSL senza dipendere da Docker Desktop (utile per ambienti headless o per evitare la licenza commerciale), puoi installare il Docker Engine direttamente nella distro WSL.
Prerequisiti
- WSL 2 attivo con una distro Ubuntu/Debian installata
systemdabilitato nella distro WSL
Abilitare systemd in WSL
Crea o modifica /etc/wsl.conf nella distro:
[boot]
systemd=truePoi riavvia WSL da PowerShell:
wsl --shutdownInstallazione Docker Engine in WSL
Entra nella distro WSL e installa Docker:
# Rimuovi eventuali versioni vecchie
sudo apt remove docker docker-engine docker.io containerd runc
# Installa dipendenze
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
# Aggiungi la chiave GPG ufficiale Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Aggiungi il repository
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
# Installa Docker Engine
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-pluginConfigurazione post-installazione
# Avvia il servizio
sudo systemctl enable docker
sudo systemctl start docker
# Aggiungi il tuo utente al gruppo docker (evita sudo)
sudo usermod -aG docker $USER
newgrp dockerVerifica
docker --version
docker run hello-worldLinux — Docker Engine (Ubuntu/Debian)
Prerequisiti
- Ubuntu 20.04+ o Debian 11+
- Accesso sudo
Installazione
# Rimuovi versioni vecchie
sudo apt remove docker docker-engine docker.io containerd runc
# Installa dipendenze
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
# Chiave GPG e repository
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
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
# Installa
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-pluginConfigurazione post-installazione
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $USER
newgrp dockerLinux — Docker Engine (Arch / Fedora)
Arch Linux
sudo pacman -S docker docker-compose
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $USERFedora
sudo dnf install -y dnf-plugins-core
sudo dnf config-manager \
--add-repo https://download.docker.com/linux/fedora/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $USERConfigurazione comune — daemon.json
Il file /etc/docker/daemon.json (Linux/WSL) o
~/.docker/daemon.json (Docker Desktop) permette di
personalizzare il comportamento del daemon:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"default-address-pools": [
{ "base": "172.20.0.0/16", "size": 24 }
]
}Dopo ogni modifica:
sudo systemctl restart dockerDocker Compose
Docker Compose è incluso come plugin in tutte le
installazioni moderne (docker compose con spazio).
Il file compose.yaml (o docker-compose.yml) descrive
i servizi:
services:
app:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/htmlAvvio:
docker compose up -d
docker compose logs -f
docker compose downConsiderazioni finali
| Scenario | Soluzione consigliata |
|---|---|
| Windows + sviluppo quotidiano | Docker Desktop + WSL 2 backend |
| WSL senza licenza Desktop | Docker Engine in WSL + systemd |
| Server Linux | Docker Engine (apt/dnf/pacman) |
| CI/CD headless | Docker Engine, nessun Desktop |
Docker Desktop è la scelta più comoda su Windows perché gestisce automaticamente la comunicazione tra Windows e WSL, espone Docker agli strumenti Windows nativi e include una GUI. Per ambienti server o pipeline CI, Docker Engine direttamente su Linux è leggero e sufficiente.
Ricorda sempre di non eseguire container come root in
produzione, usare .dockerignore, e limitare i
permessi dei bind mount.