
Docker Compose installieren Windows
Voraussetzungen
- Windows 10 1903+ oder Windows 11; für Windows Home wird WSL2 empfohlen.
- 64‑Bit-System, Hardware‑Virtualisierung aktiviert (BIOS/UEFI).
- Administratorrechte zum Installieren von Software.
- Hinweis: Wegen unterschiedlicher Windows-Versionen, Gruppenrichtlinien und Treiberkonfigurationen kann diese Anleitung auf deinem System leicht abweichen.
Schritt 1: Entscheidung treffen — Docker Desktop oder Compose-Plugin?
- Docker Desktop (empfohlen für die meisten Windows-Nutzer): enthält Docker Engine, docker CLI und das Compose‑Plugin (Befehl: docker compose). GUI-Integration, WSL2-Unterstützung.
- Alternative (Headless/Server/CI): Docker Engine + Compose-Plugin unter WSL2 / Linux-VM oder die alte standalone docker‑compose (Python/Binaries). Compose v2 (Plugin) ist moderner und kompatibler.
Tipp: Wenn du Docker Desktop wegen Lizenz/Policy nicht möchtest, nutze WSL2 + Linux-Paketmanager oder Podman (andere Anleitung nötig).
Schritt 2: Docker Desktop installieren (Windows 10/11)
- Lade den offiziellen Installer von https://www.docker.com/products/docker-desktop herunter.
- Führe die MSI/EXE als Administrator aus und folge den Installationsschritten. Aktiviere nach Möglichkeit die Option “Use WSL 2 instead of Hyper-V”.
- Nach Installation: starte Docker Desktop und lasse es initialisieren. Bei der ersten Nutzung kann ein Systemneustart nötig sein.
Prüfen:
# Öffne PowerShell (nicht WSL)
docker version
docker compose version
Erwarte Ausgabe für Server (Engine) und Client sowie eine Compose-Version (z.B. Docker Compose version v2.x.x).
Schritt 3: Falls “docker compose” oder “docker-compose not found”
- Fehlerursache 1: PATH/Plugin fehlt — Docker Desktop nicht installiert oder die Shell muss neu gestartet werden.
- Fehlerursache 2: Du verwendest die alte Syntax
docker-composestattdocker compose(Compose v2 nutzt das Plugin). - Quick-Fixes:
- Shell neu starten:
# Schließe PowerShell/Terminal und öffne es neu, oder
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine")
- Prüfe Plugin-Verzeichnis (PowerShell):
docker --help | Select-String compose
- Wenn du die alte standalone-Binary brauchst (nicht empfohlen): lade die Binary von GitHub Releases (docker/compose) herunter und platziere sie in einem Verzeichnis, das in PATH liegt. Beispiel:
# Beispiel: lade Binary herunter (ersetze URL durch aktuelle Version)
Invoke-WebRequest -Uri "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-windows-x86_64.exe" -OutFile "$env:ProgramFiles\Docker\docker-compose.exe"
Hinweis: Prüfe SHA256 der Datei beim Download von Releases; die Binary-Methode ist anfälliger für Inkonsistenzen.
Schritt 4: WSL2-Alternative (empfohlen für Windows Home / Entwickler)
- Installiere WSL2 (falls noch nicht vorhanden):
# Als Admin in PowerShell
wsl --install
# ggf. Reboot
- Installiere eine Linux-Distribution (z.B. Ubuntu) aus dem Microsoft Store.
- In WSL: installiere Docker Compose Plugin mit Paketmanager (bei Ubuntu):
# In WSL-Ubuntu
sudo apt update
sudo apt install docker.io docker-compose-plugin -y
# Start Docker daemon in WSL oder nutze Docker Desktop's WSL-Integration
- Prüfen:
docker version
docker compose version
Schritt 5: Einfaches docker-compose.yml Beispiel anlegen und starten
Lege eine Datei docker-compose.yml im Projektordner an:
version: "3.8"
services:
web:
image: nginx:stable
ports:
- "8080:80"
restart: unless-stopped
Starte die Compose‑Anwendung:
docker compose up -d
docker compose ps
docker compose logs web
Warnhinweis vor destruktiven Befehlen
Warnung: Die folgenden Befehle können Daten/Container/Images löschen. Erstelle vorher Sicherungen wichtiger Daten (Volumes, ggf. Backups der Datenverzeichnisse).
- Beispiel für Aufräum-Befehl (nicht ohne Backup ausführen):
# Entfernt nicht verwendete Container, Netzwerke, Images (vorsichtig!)
docker system prune -a
Häufige Fehler & Lösungen
- “docker: command not found” — Docker Desktop nicht installiert oder PATH nicht gesetzt; öffne neues Terminal.
- “docker compose: unknown command” — Du hast möglicherweise eine sehr alte Docker-Version; aktualisiere Docker Desktop oder installiere das Compose‑Plugin.
- Rechteprobleme (Windows Defender/Antivirus, Firewall): Prüfe, ob Docker Desktop Berechtigungen hat; Firewall-Regeln anpassen, aber nicht komplett deaktivieren.
- Volumes/Daten verloren nach prune: Backups erstellen, Volumes explizit sichern (z.B. docker run –rm -v mydata:/data -v C:\backup:/backup alpine tar …).
Abschluss & Versionsprüfung
Prüfe die installierte Compose-Version:
docker compose version
# oder für standalone
docker-compose --version
Hinweis: Keine Garantie, dass alle Schritte auf jedem Windows-System exakt gleich laufen. Wenn spezielle Fehlermeldungen auftreten, sammle Ausgabe von docker version, docker info und docker compose version und prüfe Logs in Docker Desktop (Troubleshoot).
Das Team von linux.hackshelps.com empfiehlt Docker Compose v2 (Plugin) für neue Projekte; bei rechtlichen oder Policy‑Bedenken gegenüber Docker Desktop kann WSL2 + Engine/Compose-Plugin oder Podman eine Alternative sein.
Kommst du an dieser Stelle nicht weiter oder funktioniert ein Schritt bei dir anders als beschrieben? Schreib uns einfach kurz, woran es hakt – schreib uns eine E-Mail, wir schauen es uns gemeinsam an.
Passende Themen
- Docker installieren mint
- Docker Compose Anleitung
- Docker installieren mint
- Podman vs Docker Unterschied
Häufige Fragen
Soll ich Docker oder Podman verwenden?
Beide haben ihre Berechtigung. Podman läuft standardmäßig rootless (potenziell sicherer), Docker hat das größere Ökosystem. Wir benennen die Unterschiede ehrlich statt einer Pauschalempfehlung.
Ist docker system prune gefährlich?
Es kann ungenutzte Container, Images und Volumes löschen - inklusive Daten, die noch gebraucht werden. Vor dem Ausführen immer prüfen, was betroffen ist, und wichtige Daten sichern.
Warum bekomme ich bei Docker eine Permission-Denied-Fehlermeldung?
Meist fehlt der eigene Nutzer in der docker-Gruppe. Das lässt sich beheben, sollte aber mit Bedacht gemacht werden, da Mitglieder dieser Gruppe root-ähnliche Rechte erhalten.