Guida per installare e configurare Docker su Windows - WSL - Linux

Introduzione

Docker è la piattaforma standard per la creazione, distribuzione ed esecuzione di applicazioni in container. Questa guida copre tre scenari di installazione:

  • Windows tramite Docker Desktop
  • WSL 2 (Windows Subsystem for Linux) integrato con Docker Desktop o in modalità standalone
  • Linux (Ubuntu/Debian e derivate) tramite il repository ufficiale Docker

I container Docker eliminano il classico problema “funziona sulla mia macchina” garantendo ambienti riproducibili e isolati.


Prerequisiti

Comuni

  • Connessione internet per scaricare pacchetti e immagini
  • Privilegi di amministratore / sudo sul sistema

Windows

  • Windows 10 versione 2004 o successiva (build 19041+) oppure Windows 11
  • Virtualizzazione hardware abilitata nel BIOS/UEFI (Intel VT-x / AMD-V)
  • Almeno 4 GB di RAM (consigliati 8 GB)

WSL 2

  • WSL 2 già installato e configurato (vedi Guida WSL2)
  • Una distro Linux attiva in WSL 2 (es. Ubuntu 22.04 o 24.04)

Linux

  • Ubuntu 20.04 / 22.04 / 24.04, Debian 11/12, o derivate compatibili
  • Utente con accesso sudo
  • curl o wget disponibili

Step 1 — Installazione su Windows (Docker Desktop)

1.1 Abilitare WSL 2 e la virtualizzazione

Apri PowerShell come Amministratore ed esegui:

wsl --install
wsl --set-default-version 2

Riavvia il sistema se richiesto.

1.2 Scaricare Docker Desktop

Vai su https://www.docker.com/products/docker-desktop/ e scarica l’installer per Windows.

1.3 Installare Docker Desktop

Esegui il file .exe scaricato. Durante l’installazione:

  • Spunta “Use WSL 2 instead of Hyper-V” (consigliato)
  • Spunta “Add shortcut to desktop” se desiderato
  • Completa l’installazione e riavvia il sistema

1.4 Verifica post-installazione

Apri un terminale (PowerShell o cmd) e verifica:

docker --version
docker compose version

Avvia un container di test:

docker run hello-world

Se vedi il messaggio Hello from Docker! l’installazione è riuscita.

1.5 Configurazione consigliata di Docker Desktop

Apri Docker Desktop → Settings:

  • General: abilita “Start Docker Desktop when you log in”
  • Resources → WSL Integration: attiva l’integrazione per le distro WSL che usi
  • Resources → Advanced: assegna CPU e RAM adeguati (es. 4 CPU, 4 GB RAM)
  • Docker Engine: puoi personalizzare il daemon JSON (es. mirror registry)

Step 2 — Configurazione su WSL 2

Dopo aver integrato Docker Desktop con WSL 2 (Step 1.5), Docker è già disponibile all’interno di WSL. Verifica aprendo il terminale della tua distro:

docker --version
docker compose version
docker run hello-world

2.1 WSL 2 standalone (senza Docker Desktop)

Se preferisci non usare Docker Desktop (es. per motivi di licenza aziendale), puoi installare Docker Engine direttamente nella distro WSL seguendo la procedura Linux qui sotto (Step 3), avviando il daemon manualmente:

sudo service docker start

Oppure aggiungendo al tuo .bashrc / .zshrc:

# Avvia Docker automaticamente in WSL
if ! pgrep -x "dockerd" > /dev/null; then
  sudo service docker start > /dev/null 2>&1
fi

2.2 Montare volumi tra Windows e WSL

Puoi accedere al filesystem Windows da WSL sotto /mnt/c/. Esempio:

docker run -v /mnt/c/Users/User/progetto:/app myimage

Attenzione: le performance I/O sui volumi cross-filesystem (Windows ↔ WSL) sono inferiori rispetto a file nativi WSL. Tieni i file di progetto in ~/ all’interno di WSL per performance ottimali.

2.3 Docker context in WSL

# Verifica il context attivo
docker context ls
 
# Usa il context di default (socket Unix)
docker context use default

Step 3 — Installazione su Linux (Ubuntu/Debian)

3.1 Rimuovere versioni precedenti

sudo apt remove docker docker-engine docker.io containerd runc 2>/dev/null

3.2 Aggiungere il repository ufficiale Docker

# Aggiorna i pacchetti e installa le dipendenze
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
 
# Aggiungi la chiave GPG ufficiale di 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 \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Per Debian sostituisci ubuntu con debian nell’URL del repository.

3.3 Installare Docker Engine

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

3.4 Avviare e abilitare il servizio

sudo systemctl enable docker
sudo systemctl start docker

Verifica lo stato:

sudo systemctl status docker

3.5 Aggiungere l’utente al gruppo docker

Senza questo step servirà sudo ad ogni comando Docker:

sudo usermod -aG docker $USER
newgrp docker

Disconnettiti e riconnettiti (o riavvia) affinché il gruppo sia attivo.

3.6 Verifica finale

docker --version
docker compose version
docker run hello-world

Step 4 — Configurazione comune post-installazione

4.1 Configurare il daemon Docker (daemon.json)

Il file di configurazione principale del daemon si trova in:

  • Linux/WSL: /etc/docker/daemon.json
  • Windows (Docker Desktop): accessibile da Settings → Docker Engine

Esempio di configurazione utile:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "default-address-pools": [
    { "base": "172.20.0.0/16", "size": 24 }
  ]
}

Riavvia il daemon dopo ogni modifica:

sudo systemctl restart docker

4.2 Installare Docker Compose (se non incluso)

Docker Compose V2 è incluso come plugin (docker compose). Per verificare:

docker compose version

Se mancante su Linux:

sudo apt install docker-compose-plugin

4.3 Comandi essenziali di verifica

# Info complete sul sistema Docker
docker info
 
# Stato dei container in esecuzione
docker ps
 
# Tutte le immagini locali
docker images
 
# Spazio usato da Docker
docker system df
 
# Pulizia di risorse inutilizzate
docker system prune -f

Conclusioni

Hai installato e configurato Docker su tutte e tre le piattaforme:

PiattaformaMetodoDaemon
WindowsDocker DesktopGestito da Desktop
WSL 2Integrazione Desktop o Engine standaloneTramite Desktop o service docker
LinuxDocker Engine da repository ufficialesystemd

Per un utilizzo quotidiano in ambiente di sviluppo WSL + Windows, il flusso consigliato è: Docker Desktop su Windows con integrazione WSL 2 attiva, lasciando i file di progetto nella home WSL (~/) per performance ottimali.

Prossimi passi consigliati: esplora Docker Compose, Docker Networking e Docker Volumes per gestire applicazioni multi-container.


Vedi anche