devAlice
← Windows

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

MerkmalDocker DesktopNative Docker Engine in WSL2
Lizenz (250+ Mitarbeiter / 10 Mio. USD+ Umsatz)Kostenpflichtig (5–21 USD/Benutzer/Monat)Kostenlos (Open Source)
Lizenz (privat / klein)KostenlosKostenlos
Installationwinget install Docker.DockerDesktop (eine Zeile)Manuell, 5–10 Min.
GUI (Image-/Container-Verwaltung)Nur CLI (oder externe GUI)
Kubernetes-Integrationminikube/kind manuell
Automatische Updatesapt/yum manuell
RessourcenisolierungDocker verwaltet eine eigene WSL-DistroDieselbe WSL-Ubuntu-Instanz wie gewöhnlich
Empfohlen fürEinzelpersonen / KMU / bei GUI-BedarfLizenzvermeidung / 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.DockerDesktop

Nach 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-world

A.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=2GB

A.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:

PlanPreisHinweise
Personal0 USDBei Erfüllung der kostenlosen Nutzungsbedingungen
Pro5 USD/MonatEinzelperson kostenpflichtig
Team9 USD/MonatKleine Teams
Business24 USD/MonatUnternehmen 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-plugin

B.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
EOF

WSL aus Windows PowerShell neu starten:

wsl --shutdown
# Danach WSL erneut betreten

B.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-world

B.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' >> ~/.bashrc

Die 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.conf eintragen

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:

MethodeZeit (kalter Cache)Leerlaufspeicher
Docker Desktop4,8 s~1,2 GB (Docker-Desktop-Prozess)
WSL2 nativ4,6 s~150 MB (nur dockerd)
Podman4,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 build

2.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 leeren

3. 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 verwenden

Oft 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 / .git zu .dockerignore hinzufü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

Referenzen

Changelog

  • 2026-05-12 — Erster Entwurf (devAlice M2 Seed-Erweiterung)