Video 01 - Docker Creazione Web Server Apache | Prof. Giagnotti
🎥 VIDEO 01 · DOCKER · CONTAINER + WSL2 + DOCKER DESKTOP
✍ Autore: profgiagnotti

Video 01 - Docker Creazione Web Server Apache

Dalle VM ai container: cos'è Docker, architetture a microservizi, WSL2, Kali Linux con Win-KeX GUI e installazione di Docker Desktop su Windows.

Video 01 Docker WSL2 + Kali Docker Desktop ~35 min di video 📑 Stampa → ▶ YouTube Aggiornata 2025/26

2. Di cosa parla questo video

In questo tutorial vediamo la teoria alla base dei container e delle architetture a microservizi e ti guiderò nell'installazione di WSL2 e di Docker Desktop, con distribuzione Kali Linux e interfaccia grafica Win-KeX, per creare il tuo primo lab Docker su Windows.

Partiamo da zero: VM vs container, hypervisor Type 1/2 vs Docker Engine, isolamento kernel Linux, namespace e cgroup, architetture monolitiche vs microservizi, vantaggi container: leggerezza, portabilità, scalabilità, DevOps. Poi WSL2: cos'è, perché Microsoft lo ha creato, differenza WSL1 (translation layer) vs WSL2 (kernel Linux reale in VM leggera), integrazione con Windows, filesystem, networking. Installazione: wsl --install, wsl --set-default-version 2, Microsoft Store Kali Linux, sudo apt update && sudo apt upgrade -y, installazione Win-KeX per GUI Kali: sudo apt install kali-win-kex -y, kex --win -s. Infine Docker Desktop: download da docker.com, installazione con backend WSL2, abilitazione integrazione WSL2, verifica docker --version, docker ps, wsl -l -v, primo container test docker run hello-world e docker run -d -p 80:80 httpd Apache.

💬 Nota del docente - Perché ho fatto questo video

Questo è il video che sblocca tutto il corso Docker. Nel video al minuto 8 mostro l'errore che blocca il 70% degli studenti: installano Docker Desktop senza WSL2 abilitato, così Docker non parte e resta con errore "WSL2 not installed". Vi mostro come abilitare virtualizzazione da BIOS, Hyper-V, Virtual Machine Platform e WSL da Windows Features. Al minuto 14 mostro Kali senza Win-KeX: provate a lanciare GUI e vedete solo terminale nero, senza Win-KeX non avete desktop. Al minuto 22 mostro Docker Desktop senza integrazione WSL2: docker ps da Kali dice "Cannot connect to Docker daemon", dovete andare in Settings → Resources → WSL Integration → spuntare Kali. È la base per tutti i 4 video.

3. Obiettivi di apprendimento

  • ✅ Cosa sono i container e le architetture a microservizi vs monolitiche
  • ✅ Cos'è Docker: Engine, immagini, container, Dockerfile, Docker Hub
  • ✅ Cos'è WSL2 e perché è utile con Docker Desktop su Windows
  • ✅ Come installare WSL2 con distribuzione Kali Linux e Win-KeX (GUI) per desktop Linux su Windows
  • ✅ Come installare Docker Desktop con backend WSL2 e verificare con hello-world e Apache httpd
🎯 Cosa saprai fare dopo questo video

Alla fine saprai spiegare differenza VM vs container, monolitico vs microservizi, installare WSL2 su Windows 10/11 con wsl --install, installare Kali Linux da Store, aggiornare Kali, installare Win-KeX per GUI con kex --win -s, installare Docker Desktop con WSL2 backend, abilitare integrazione WSL per Kali, lanciare docker run hello-world e docker run -d -p 80:80 httpd per web server Apache di prova, verificare da browser localhost:80.

4. Perché container - Da VM a microservizi

Senza container, sviluppo e deploy sono pesanti e lenti:

VM tradizionaliContainer Docker (questo corso)
Hypervisor + OS guest completo per ogni VM, GB di RAMDocker Engine su kernel host, condivide kernel, MB di RAM
Avvio in minuti, immagine da GBAvvio in secondi, immagine da MB, portabilità totale
Monolitico: tutto in una VM, scalabilità difficileMicroservizi: Apache, MySQL, PHP in container separati, scalabili
Ambiente diverso da dev a prod → "funziona sulla mia macchina"Stesso container ovunque: dev, test, prod identici
WSL1 translation lentaWSL2 kernel Linux reale + Docker Desktop integrazione
No GUI Linux su WindowsKali + Win-KeX GUI desktop Linux su Windows
🎯 Domanda da colloquio / esame

Se vi chiedono "Differenza VM e container? Cos'è WSL2?", rispondete: "VM virtualizza hardware con hypervisor e OS guest completo per ogni VM, pesante GB e avvio minuti. Container virtualizza OS con Docker Engine che condivide kernel host, usa namespace e cgroup per isolamento, leggero MB e avvio secondi, portabilità. WSL2 è kernel Linux reale in VM leggera su Windows, differenza da WSL1 che era translation layer syscall. WSL2 serve a Docker Desktop su Windows per eseguire container Linux nativamente senza VM pesante, con integrazione filesystem e networking, e con Kali + Win-KeX ho GUI Linux su Windows". Risposta da sistemista DevOps.

5. Concetti chiave - Container, Docker, WSL2, Kali, Win-KeX

Cuore del video, minuto 4-18:

DOCKER - CONCETTI CHIAVE
Container: Pacchetto leggero con app + dipendenze + librerie, condivide kernel host Isolamento tramite namespace (PID, NET, MNT) e cgroup (CPU, RAM) Immagine immutabile (template) → container istanza eseguibile (read-write layer) Vantaggi: portabilità, scalabilità, DevOps, microserviziDocker: Engine: runtime che gestisce immagini e container Immagine: template read-only, es. httpd, nginx, kali Container: istanza di immagine in esecuzione, es. docker run httpd Dockerfile: ricetta per creare immagine personalizzata (Video 3) Docker Hub: registry pubblico di immagini ufficiali (Video 2) Docker Desktop: GUI per Windows/Mac con backend WSL2, include Engine, Compose, KubernetesArchitetture: Monolitica: app unica con tutto dentro (es. LAMP in una VM) Microservizi: servizi separati in container (Apache container, MySQL container, PHP container) comunicano via rete, scalabili indipendentiWSL2 (Windows Subsystem for Linux 2): Kernel Linux reale 5.x in VM leggera ottimizzata, integrazione Windows WSL1: translation syscall Linux→Windows, lenta, no Docker WSL2: VM leggera, filesystem ext4 reale, networking, Docker nativo, veloce Comandi: wsl --install, wsl --set-default-version 2, wsl -l -v, wsl --shutdownKali Linux + Win-KeX: Kali: distro Debian per pentesting, tool sicurezza Install da Microsoft Store → user/pass Win-KeX: GUI per Kali su WSL2, 3 modalità: Win (finestra), Seamless (integrazione), Enhanced (RDP) Install: sudo apt update && sudo apt install kali-win-kex -y → kex --win -s (server), kex --win --sl -s (seamless)Docker Desktop + WSL2: Backend WSL2 in Settings, Resources → WSL Integration → spunta Kali Verifica: da Powershell wsl -l -v → Kali Running v2, da Kali docker --version, docker ps, docker run hello-world
VM + WSL1 (VECCHIO)
Hypervisor pesante, OS guest GB, avvio minuti, WSL1 translation lenta, no Docker nativo, no GUI Linux, "funziona solo sulla mia macchina".
CONTAINER + WSL2 + DOCKER DESKTOP (QUESTO VIDEO)
Docker Engine leggero MB, avvio secondi, microservizi scalabili, WSL2 kernel reale veloce, Kali + Win-KeX GUI, Docker Desktop integrazione, stesso container ovunque.

6. Lab pratico - Installazione WSL2 Kali e Docker Desktop

Nel video (minuto 5-30):

  • Prerequisiti Windows: Windows 10 2004+ o 11, BIOS virtualizzazione VT-x/AMD-V abilitata, Windows Features → spunta Hyper-V, Virtual Machine Platform, Windows Subsystem for Linux → riavvio
  • WSL2: PowerShell Admin → wsl --install (installa WSL2 + Ubuntu default) → wsl --set-default-version 2 → wsl --update → verifica wsl -l -v → VERSION 2
  • Kali Linux: Microsoft Store → cerca Kali Linux → Installa → Avvia → crea user kali e password → sudo apt update && sudo apt upgrade -y → sudo apt install kali-win-kex -y → kex --win -s → si apre finestra Kali GUI desktop → kex --win --sl -s per seamless → kex --stop per chiudere
  • Docker Desktop: docker.com → Download Docker Desktop → installer → spunta Use WSL2 instead of Hyper-V → Installa → riavvio → avvia Docker Desktop → accetta Terms → Skip tutorial → Settings → General → Use WSL2 based engine spuntato → Resources → Advanced → CPUs, Memory → Resources → WSL Integration → Enable integration with my default WSL distro + spunta Kali-linux → Apply & Restart
  • Verifica: PowerShell → docker --version → Docker 24.x, docker ps → vuoto ok, wsl -l -v → docker-desktop Running, Kali Running v2. Da Kali terminale → docker --version, docker run hello-world → scarica immagine e stampa Hello, docker run -d -p 80:80 --name web httpd → Apache, browser localhost:80 → It works! docker ps -a, docker stop web, docker rm web
WSL2 + KALI + DOCKER DESKTOP - COMANDI
# PowerShell Admin - Abilita WSL2 wsl --install wsl --set-default-version 2 wsl --update wsl -l -v # Output: NAME STATE VERSION # Kali-linux Running 2 # docker-desktop Running 2# Se wsl --install fallisce, abilita manualmente da Windows Features # Pannello controllo -> Programmi -> Attiva/disattiva funzionalità Windows # Spunta: Hyper-V, Piattaforma macchina virtuale, Sottosistema Windows per Linux # Riavvio# Kali Linux - Setup iniziale # Da Microsoft Store installa Kali Linux, avvia, crea utente sudo apt update sudo apt upgrade -y sudo apt install kali-win-kex -y# Win-KeX GUI kex --win -s # Modalità finestra kex --win --sl -s # Modalità seamless (finestre Kali integrate in Windows) kex --stop # Chiudi KeX kex --win --esm -s # Modalità Enhanced con suoni# Docker Desktop - Verifica da PowerShell e da Kali docker --version # Docker version 24.0.5, build ced0996docker ps # CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESdocker run hello-world # Hello from Docker! # This message shows that your installation appears to be working correctly.docker run -d -p 80:80 --name webserver-apache httpd # httpd = Apache ufficiale, -d detached, -p 80:80 mappa porta host:container, --name nomedocker ps # CONTAINER ID ... IMAGE httpd ... PORTS 0.0.0.0:80->80/tcp ... NAMES webserver-apache# Browser -> http://localhost:80 -> It works!docker logs webserver-apache docker stop webserver-apache docker rm webserver-apache docker images# Da Kali WSL2 verifica integrazione wsl # Entri in Kali docker ps # Deve funzionare se integrazione WSL abilitata in Docker Desktop Settings # Se errore Cannot connect to Docker daemon, vai in Docker Desktop -> Settings -> Resources -> WSL Integration -> spunta Kali
🔧 WSL2 + Docker cheat sheet

WSL2: wsl --install, wsl -l -v verifica VERSION 2, wsl --shutdown per riavviare. Kali: Store → apt update → apt install kali-win-kex → kex --win -s GUI. Docker Desktop: download → Use WSL2 backend → Settings Resources WSL Integration spunta Kali → Apply. Verifica: docker run hello-world ok, docker run -d -p 80:80 httpd → localhost:80 It works! Da Kali docker ps deve funzionare, se no abilita integrazione. Nel video al minuto 28 mostro Docker Desktop dashboard con container Apache Running.

7. Errori comuni da evitare

  • Virtualizzazione disabilitata da BIOS: wsl --install errore "Virtualization not enabled" → entra in BIOS (F2/DEL all'avvio) → Advanced → VT-x / AMD-V / SVM → Enabled → Save & Exit.
  • WSL1 invece di WSL2: wsl -l -v mostra VERSION 1 → Docker Desktop non parte, errore WSL2 required. Esegui wsl --set-version Kali-linux 2 e wsl --set-default-version 2.
  • Hyper-V mancante: Docker Desktop errore "Hyper-V not enabled" → Windows Features → spunta Hyper-V + Virtual Machine Platform + WSL → riavvio.
  • Docker Desktop senza integrazione WSL: da Kali docker ps → Cannot connect to Docker daemon → Docker Desktop Settings → Resources → WSL Integration → spunta Kali-linux → Apply & Restart → da Kali riprova.
  • Kali senza Win-KeX: lanci Kali e vedi solo terminale senza GUI → sudo apt install kali-win-kex -y e kex --win -s per desktop.
  • Porta 80 occupata: docker run -p 80:80 errore port already allocated → Skype o IIS usa porta 80 → docker run -p 8080:80 e browser localhost:8080 oppure netstat -ano | findstr :80 e chiudi processo.
  • WSL2 filesystem lento: progetti su /mnt/c/ lenti → sposta progetti in home Linux ~/ dentro WSL2, non su C: montato, velocità 5x.
⚠️ Errore che blocca Docker al 100%

WSL2 non installato o VERSION 1 + Docker Desktop senza backend WSL2 + integrazione WSL disabilitata. Sintomo: Docker Desktop non parte, errore WSL2 not installed, docker ps Cannot connect to daemon, da Kali docker command not found, hello-world non parte. Soluzione: BIOS virtualizzazione Enabled, Windows Features Hyper-V + Virtual Machine Platform + WSL spuntati, PowerShell Admin wsl --install e wsl --set-default-version 2, wsl -l -v verifica VERSION 2 per Kali e docker-desktop Running, Docker Desktop Settings Use WSL2 based engine spuntato, Resources WSL Integration spunta Kali-linux Apply & Restart, PowerShell docker run hello-world ok. Nel video al minuto 8 mostro BIOS e Features.

8. Approfondimento: Docker Desktop e WSL2 integration

Architettura finale lab:

ComponenteRuoloVerifica
Windows HostOS base, Hyper-V, WSL2 VM leggeraWin 10/11 2004+, Task Manager → Performance → Virtualization Enabled
WSL2 EngineKernel Linux reale, filesystem ext4, networkingwsl -l -v → VERSION 2, wsl --shutdown per riavvio
Kali Linux WSL2Distro pentesting, terminale + GUI Win-KeXStore Kali, kex --win -s GUI, apt update
Docker DesktopEngine, CLI, GUI, Compose, Kubernetes, backend WSL2docker --version, Settings → WSL2 based engine, Resources → WSL Integration Kali spuntato
Container httpdApache web server test, porta 80→80docker run -d -p 80:80 httpd, localhost:80 It works!, docker ps, logs, stop, rm
Prossimi videoVideo 2 PULL, Video 3 Dockerfile PUSH, Video 4 Compose LAMPBase pronta per corso completo

Prossimo video: Docker PULL di immagini ufficiali e creazione container.

📚 Compito per casa

Prepara lab: Windows 10/11 verifica virtualizzazione abilitata Task Manager, PowerShell Admin wsl --install, wsl --set-default-version 2, wsl -l -v verifica VERSION 2. Installa Kali da Store, crea user, sudo apt update && upgrade, sudo apt install kali-win-kex -y, kex --win -s verifica GUI, kex --stop. Scarica Docker Desktop da docker.com, installa con Use WSL2 backend, avvia, Settings General Use WSL2 based engine spuntato, Resources WSL Integration spunta Kali Apply & Restart. Verifica PowerShell docker --version, docker run hello-world Hello message, docker run -d -p 80:80 --name web httpd, browser localhost:80 It works!, docker ps, docker logs web, docker stop web, docker rm web, da Kali wsl → docker ps funzionante. Screenshot wsl -l -v VERSION 2 + Docker Desktop Running + localhost It works! Mandamelo prima del Video 2 PULL immagini.

9. Risorse correlate