
Docker unter WSL2: Containerisierung ohne Reibungsverluste

Inhaltsverzeichnis
Docker auf Windows war lange Zeit ein Kompromiss: schwere VirtualBox-VMs, träges Hyper-V, hoher Ressourcenverbrauch.
Mit WSL2 hat sich das grundlegend geändert. Docker läuft heute auf einem echten Linux-Kernel, tief integriert in Windows – ohne Emulation, ohne Übersetzungsschichten.
In diesem siebten Teil der Serie zeige ich dir, wie du Docker unter WSL2 sauber, performant und alltagstauglich einsetzt.
Warum WSL2 der Game-Changer für Docker ist
Der entscheidende Unterschied liegt im Kernel.
WSL1: Systemaufrufe werden übersetzt → langsam, unvollständig
WSL2: Echte Linux-Utility-VM mit eigenem Kernel → volle Docker-Kompatibilität
Was das praktisch bedeutet
Native Docker-Performance
Keine Inkompatibilitäten mit Linux-Images
Identisches Verhalten wie auf Produktionsservern
Docker-Befehle funktionieren gleichzeitig in:
Windows PowerShell
WSL2-Terminal (Ubuntu)
Docker ist kein Fremdkörper mehr, sondern Teil des Systems.
Setup: Docker Desktop mit WSL2-Backend
Voraussetzungen prüfen
Windows-Version
Windows 10 ab Build 18362
oder Windows 11
Prüfen mit:
winver
WSL2 als Standard setzen
wsl --set-default-version 2
Docker Desktop korrekt konfigurieren
Docker Desktop für Windows installieren
Während der Installation (oder später):
Use the WSL 2 based engine aktivieren
Damit nutzt Docker nicht mehr Hyper-V direkt, sondern den WSL2-Kernel.
Docker mit deiner Linux-Distribution verbinden
Ohne diesen Schritt funktioniert Docker im Ubuntu-Terminal nicht.
WSL-Integration aktivieren
Docker Desktop → Settings
Resources → WSL Integration
Deine Distribution aktivieren (z. B.
Ubuntu-24.04)Apply & Restart
Danach in WSL testen:
docker --version
docker ps
Keine manuelle Docker-Installation in Ubuntu notwendig.
Dein erster Container unter WSL2
Nginx-Testcontainer starten
docker run -d -p 8080:80 --name mein-webserver nginx
Dann im Windows-Browser:
http://localhost:8080
Warum das so gut funktioniert
WSL2 leitet Ports automatisch an Windows weiter
Keine IP-Suche
Kein NAT-Gefrickel
Es fühlt sich an wie ein nativer Windows-Webserver – läuft aber auf Linux.
Apache-Testcontainer (Quickstart)
Der direkte Ersatz für dein Nginx-Beispiel:
docker run -d -p 8080:80 --name mein-apache apache
Danach im Browser:
http://localhost:8080
Du siehst die Apache It works!-Seite.
Apache mit eigenem Projekt (DocumentRoot mounten)
Für reale Projekte willst du deinen Code mounten:
docker run -d \
-p 8080:80 \
-v $(pwd):/usr/local/apache2/htdocs \
--name apache-dev \
apache
Erklärung
$(pwd)→ aktuelles Projektverzeichnis (WSL-Pfad!)/usr/local/apache2/htdocs→ Apache DocumentRootÄnderungen sind sofort im Browser sichtbar
Apache mit PHP (realistischer Dev-Stack)
Apache allein reicht selten – hier eine PHP-fähige Variante:
docker run -d \
-p 8080:80 \
-v $(pwd):/var/www/html \
--name apache-php \
php:8.3-apache
Jetzt kannst du z. B. testen:
echo "<?php phpinfo();" > index.php
Browser:
http://localhost:8080
Apache stoppen & aufräumen
docker stop apache-dev
docker rm apache-dev
Oder alles auf einmal:
docker rm -f mein-apache apache-dev apache-php
Typische Fehler unter WSL2 (wichtig)
Port 80 blockiert
Wenn Apache nicht startet:
IIS unter Windows läuft noch
Anderen Port nutzen (
8080,8081, …)
Langsame Performance
Ursache:
Projekt liegt unter
/mnt/c
Lösung:
cd ~/projects/mein-projekt
Kurzvergleich: Nginx vs. Apache im Container
Zweck | Empfehlung |
|---|---|
Quick-Test | Apache |
PHP-Projekte |
|
Reverse Proxy / Performance | Nginx |
Legacy-Projekte | Apache |
Merksatz
Docker ist egal, ob Apache oder Nginx – entscheidend ist das Image.
Der Rest (Ports, Volumes, Netzwerk) bleibt identisch.
Der vmmem-Faktor: Speicher im Griff behalten
Docker + WSL2 nutzt aggressiv Linux-Page-Cache.
Im Taskmanager erscheint das als vmmem.
Lösung: Ressourcen begrenzen
%USERPROFILE%\.wslconfig
[wsl2]
memory=8GB
Optional (Windows 11):
[experimental]
autoMemoryReclaim=dropCache
Zusätzlich regelmäßig aufräumen:
docker system prune
Best Practices für Docker unter WSL2
Projekte immer im Linux-Dateisystem
~/projectsVolumes nicht auf
/mnt/cmountenDocker Compose für Stacks nutzen
Container als kurzlebige Prozesse denken
Images regelmäßig aktualisieren
FAQ – Docker & WSL2
Warum funktioniert Docker in PowerShell, aber nicht in Ubuntu?
Die WSL-Integration für die Distribution ist nicht aktiviert.
Brauche ich Docker Desktop zwingend?
Für die meisten Entwickler: ja. Native Engine ohne Desktop ist möglich, aber deutlich komplexer.
Warum ist Docker auf /mnt/c so langsam?
Dateizugriffe laufen über das 9p-Protokoll – extrem teuer bei vielen Dateien.
Ist Docker unter WSL2 produktionsnah?
Ja. Das Verhalten entspricht sehr genau einem Linux-Server.
Was tun, wenn Docker hängt?
wsl --shutdown
Analogie zur Einordnung
Docker unter WSL2 ist wie eine Industrieküche mit Durchreiche:
Die Container arbeiten abgeschottet und effizient – du greifst bequem über localhost darauf zu, ohne den Maschinenraum betreten zu müssen.
Ausblick
Im nächsten Teil kümmern wir uns um Wartung, Debugging und Troubleshooting:
typische WSL2-Probleme
Logs richtig lesen
Performance langfristig stabil halten
Teil der Serie


