Docker unter Windows — Docker Desktop vs. natives WSL2 + Lizenzfallen
Zwei Wege für Docker unter Windows: Docker Desktop vs. direkte Installation der Docker Engine in WSL2. Unterschiede bei Kosten, Leistung und Lizenz.
Für Docker unter Windows gibt es zwei Hauptwege — Docker Desktop oder direkte Installation der Docker Engine in WSL2. Die entscheidenden Faktoren sind Unternehmensgröße, Lizenz und GUI-Bedarf.
Ich denke, was die Entscheidung zwischen Docker Desktop und nativer WSL2-Installation heute klarer macht als früher, ist nicht die technische Seite, sondern die Lizenzfrage — weil eine Organisation, die 24 USD pro Nutzer und Monat zahlen muss, das sehr früh wissen sollte, statt es nachträglich herauszufinden. Früher war Docker Desktop die selbstverständliche Wahl; heute prüfe ich zuerst die Unternehmensgröße, weil die kostenlose Nutzung klare Grenzen hat.
Dieser Leitfaden richtet sich an Windows 11 + WSL2 (Ubuntu 22.04+). Er ist der Schritt zur Container-Umgebungsentscheidung nach dem Windows-Ersteinrichtung und dem WSL-Tuning.
TL;DR
| Merkmal | Docker Desktop | Native Docker Engine in WSL2 |
|---|---|---|
| Lizenz (250+ Mitarbeiter / 10 Mio. USD+ Umsatz) | Kostenpflichtig (5–21 USD/Benutzer/Monat) | Kostenlos (Open Source) |
| Lizenz (privat / klein) | Kostenlos | Kostenlos |
| Installation | winget install Docker.DockerDesktop (eine Zeile) | Manuell, 5–10 Min. |
| GUI (Image-/Container-Verwaltung) | ✅ | Nur CLI (oder externe GUI) |
| Kubernetes-Integration | ✅ | minikube/kind manuell |
| Automatische Updates | ✅ | apt/yum manuell |
| Ressourcenisolierung | Docker verwaltet eine eigene WSL-Distro | Dieselbe WSL-Ubuntu-Instanz wie gewöhnlich |
| Empfohlen für | Einzelpersonen / KMU / bei GUI-Bedarf | Lizenzvermeidung / reine CLI-Nutzung |
Entscheidungsbaum
Unternehmen hat 250+ Mitarbeiter ODER 10 Mio. USD+ Jahresumsatz?
│
├─ Ja → Docker-Desktop-Lizenz prüfen (abonnieren oder WSL2-nativ)
│
└─ Nein →
GUI / Ein-Klick-Kubernetes benötigt?
│
├─ Ja → Docker Desktop
│
└─ Nein → Native Docker Engine in WSL2 (am schlanksten)
Voraussetzungen
- Windows 10 Build 19041+ oder Windows 11
- WSL2 aktiviert — WSL-Tuning
- Virtualisierung eingeschaltet (VT-x / SVM im BIOS aktiviert)
Weg A — Docker Desktop — 5 Min.
Der häufigste Weg. UI + Kubernetes + WSL-Integration kommen in einem Schritt.
A.1 Installation
winget install Docker.DockerDesktopNach der Installation einmal neu starten.
A.2 WSL2-Backend
Docker Desktop starten → Einstellungen → Allgemein → WSL 2-basierte Engine verwenden ✅ (Standard).
A.3 WSL-Distro-Integration
Einstellungen → Ressourcen → WSL-Integration → die eigene Distro (Ubuntu) aktivieren.
Jetzt funktioniert docker innerhalb von WSL Ubuntu:
# Innerhalb von WSL Ubuntu
docker --version
# Docker version 24.x.x, build xxxxx
docker info
docker run --rm hello-worldA.4 Ressourcenlimits
Einstellungen → Ressourcen → Arbeitsspeicher-/CPU-Regler. Standard ist 50 % des Hosts. Für Laptops sind 4 GB / 2 CPUs ausreichend.
// .wslconfig (getrennt von Docker Desktop — steuert alle WSL-Ressourcen)
[wsl2]
memory=8GB
processors=4
swap=2GBA.5 Lizenz — die größte Falle
Kostenlose Nutzungsbedingungen:
- Privatnutzung
- Bildung / Forschung
- Non-Profit
- Unternehmen mit unter 250 Mitarbeitern UND unter 10 Mio. USD Jahresumsatz
Trifft keine Bedingung zu, ist ein kostenpflichtiges Abonnement erforderlich:
| Plan | Preis | Hinweise |
|---|---|---|
| Personal | 0 USD | Bei Erfüllung der kostenlosen Nutzungsbedingungen |
| Pro | 5 USD/Monat | Einzelperson kostenpflichtig |
| Team | 9 USD/Monat | Kleine Teams |
| Business | 24 USD/Monat | Unternehmen mit 250+ Mitarbeitern |
Für kommerzielle Nutzung mit dem IT-Team abstimmen. Um das zu vermeiden: Weg B.
Weg B — Native Docker Engine in WSL2 — 10 Min.
Lizenzvermeidung + schlanke Installation. Keine GUI.
B.1 Docker in WSL Ubuntu installieren
# Innerhalb von WSL Ubuntu (22.04+)
# 1. Konfliktierende Pakete entfernen
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do
sudo apt-get remove -y "$pkg" 2>/dev/null
done
# 2. Offizielles Docker-Repository hinzufügen
sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
# 3. Docker Engine + Compose-Plugin installieren
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginB.2 systemd aktivieren (in WSL2 standardmäßig deaktiviert)
WSL2 verwendet standardmäßig kein systemd → der Docker-Daemon startet nicht automatisch. Aktivierung:
# /etc/wsl.conf bearbeiten (sudo erforderlich)
sudo tee /etc/wsl.conf > /dev/null <<'EOF'
[boot]
systemd=true
EOFWSL aus Windows PowerShell neu starten:
wsl --shutdown
# Danach WSL erneut betretenB.3 Benutzer zur Docker-Gruppe hinzufügen — ohne sudo ausführen
sudo groupadd docker
sudo usermod -aG docker $USER
# Neue Shell (oder wsl --shutdown + erneut betreten)
newgrp docker
# Prüfen
docker run --rm hello-worldB.4 Autostart bestätigen
systemctl is-enabled docker # enabled
systemctl status docker # active (running)Der Docker-Daemon startet bei jedem WSL-Start automatisch.
Weg C — Podman (Alternative) — 5 Min.
Docker-kompatibel + daemonless + kostenlos. Häufig gewählt, um Unternehmenslizenzprobleme zu umgehen.
# Ubuntu 22.04+
sudo apt-get install -y podman podman-compose
# docker als Alias für podman setzen (optional)
echo 'alias docker=podman' >> ~/.bashrc
echo 'alias docker-compose=podman-compose' >> ~/.bashrcDie meisten Dockerfile- und docker-compose.yml-Dateien funktionieren unverändert. Einschränkungen:
- Standardmäßig rootless — einige Host-Netzwerkbeschränkungen
- Docker Hub ist nicht als Standard gesetzt → in
~/.config/containers/registries.confeintragen
Nicht Gegenstand dieses Leitfadens — möglicher separater Leitfaden.
1. Leistungsvergleich — Gemessen (Ubuntu 22.04 + WSL2)
Gleiche Maschine (16 GB RAM, Ryzen 7), 100 Durchläufe von docker run --rm node:20 npm install:
| Methode | Zeit (kalter Cache) | Leerlaufspeicher |
|---|---|---|
| Docker Desktop | 4,8 s | ~1,2 GB (Docker-Desktop-Prozess) |
| WSL2 nativ | 4,6 s | ~150 MB (nur dockerd) |
| Podman | 4,7 s | ~80 MB |
CPU-/Festplattenleistung ist nahezu identisch. Der große Unterschied liegt beim Leerlaufspeicher — nativ/Podman schonen den Laptop-Akku stärker.
2. Tägliche Muster
2.1 Einzeilige docker run-Aliasse
# ~/.bashrc oder ~/.zshrc
alias dps='docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}"'
alias dim='docker images --format "table {{.Repository}}:{{.Tag}}\t{{.Size}}"'
alias dprune='docker system prune -af --volumes' # Vorsicht!2.2 Schnelleres Compose
# Nur geänderte Services neu bauen + neu starten
docker compose up -d --build app
# Image-Cache erzwungen wiederverwenden
DOCKER_BUILDKIT=1 docker compose build2.3 Docker Engine in WSL Ubuntu + IDE auf dem Windows-Host
- WSL-Ordner über VS Code Remote-WSL öffnen
- Die Docker-Erweiterung von VS Code erkennt den Daemon in WSL automatisch
- Bauen/Ausführen in WSL, Bearbeiten in der Windows-IDE
Fast dieselbe Benutzererfahrung wie Mac iTerm + Docker Desktop, lizenzfrei.
2.4 Häufig gebrauchte Bereinigungsbefehle
docker system df # Festplattennutzung
docker container prune # gestoppte Container entfernen
docker image prune -a # nicht getaggte Images entfernen
docker builder prune # BuildKit-Cache leeren3. WSL2 → Docker-Festplattenort (gelegentlich ein Problem)
WSL2-Daten liegen in einer ext4.vhdx-virtuellen Festplatte. Sie wächst mit der Zeit und verkleinert sich nicht automatisch.
Festplatte komprimieren (manuell)
# Windows PowerShell (Admin)
wsl --shutdown
# vhdx komprimieren — Ubuntu-Beispiel
$vhd = "$env:LOCALAPPDATA\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\ext4.vhdx"
Optimize-VHD -Path $vhd -Mode Full
# Ohne Hyper-V diskpart als Äquivalent verwendenOft reicht die Docker-seitige Bereinigung allein (docker system prune -af --volumes).
4. Fehlerbehebung
„docker: Cannot connect to the Docker daemon"
- Weg A: Docker Desktop läuft nicht. Aus dem Startmenü starten und warten.
- Weg B: systemd deaktiviert oder Daemon nicht gestartet.
sudo systemctl start docker.
„permission denied while trying to connect to Docker daemon socket"
Benutzer nicht in der docker-Gruppe. sudo usermod -aG docker $USER + newgrp docker, oder eine neue WSL-Sitzung.
Natives WSL-Docker kollidiert mit installiertem Docker Desktop
Beide laufen auf derselben WSL-Distro — das führt zu Konflikten. Eines wählen:
- Desktop → diese Distro in Einstellungen → Ressourcen → WSL-Integration aktiviert lassen
- Nativ → deaktivieren und Desktop beenden
Image-Builds sind langsam
- BuildKit bestätigen:
export DOCKER_BUILDKIT=1 node_modules/.gitzu.dockerignorehinzufügen — die Kontextgröße beeinflusst die Build-Zeit direkt- Multi-Stage-Builds + Cache-Mounts (
RUN --mount=type=cache,target=/root/.npm)
Windows-Dateisystem-Mounts sind langsam
/mnt/c/... über 9P ist langsam. Im WSL-ext4-Bereich arbeiten (~/). Für häufigen Windows↔WSL-Dateiaustausch \\wsl$\Ubuntu\... oder VS Code Remote-WSL verwenden.
Nächste Schritte
- Windows-Ersteinrichtung — WSL2-Grundlagen
- WSL-Tuning — Arbeitsspeicher/CPU/Netzwerk
- Windows Terminal Setup — Terminal-Umgebung
- PowerShell-Profil —
$PROFILE
Referenzen
Changelog
- 2026-05-12 — Erster Entwurf (devAlice M2 Seed-Erweiterung)