Zum Hauptinhalt springen
Self-Hosting & Privatsphäre

Docker Compose: Befehl nicht gefunden

Sie haben docker-compose up -d schon oft ausgeführt - jetzt heißt es command not found. Fast immer der V1/V2-Wechsel, nicht ein kaputter Install: konkrete Fixes für Debian, Ubuntu, Raspberry Pi OS und Synology.

Milan Buha24. Oktober 20266 Min. LesezeitRead in English
TeilenXin
Docker Compose: Befehl nicht gefunden

Docker Compose: Befehl nicht gefunden

Sie haben docker-compose up -d auf einem Rechner ausgeführt, auf dem genau dieser Befehl schon ein Dutzend Mal funktioniert hat - oder auf einem frisch geflashten Pi, oder einem gerade neu gestarteten Synology-NAS - und die Shell antwortet mit docker-compose: command not found. Docker selbst ist offensichtlich installiert; docker ps funktioniert einwandfrei. Was ist also kaputt?

TL;DR
  • Nichts ist kaputt. In fast allen Fällen ist Compose V2 installiert (das Plugin docker compose, ohne Bindestrich) - Sie tippen aber noch die eingestellte V1-Syntax (docker-compose, mit Bindestrich).
  • Prüfen Sie zuerst docker compose version - funktioniert das, ist Compose bereits da, und die Lösung ist nur den Bindestrich durch ein Leerzeichen zu ersetzen.
  • Debian/Ubuntu: sudo apt-get install docker-compose-plugin. Raspberry Pi OS: Dockers Installationsskript verwenden, nicht pip3 install docker-compose. Synology: es gibt gar kein separates Binary zu installieren - es ist fest im Container Manager eingebaut.
  • Schlägt auch docker compose version fehl, ist es ein echtes Installations- oder PATH-Problem, nicht der V1/V2-Wechsel - der Fix dafür ist weiter unten beschrieben.
  • Ein Shell-Alias hält alte docker-compose-Skripte am Laufen, sollte aber nicht blind eingesetzt werden - es kann verschleiern, dass versehentlich das veraltete V1-Binary installiert wurde.

Warum das passiert: Ihnen fehlt V2, nicht Docker Compose selbst

Compose V1 - das eigenständige docker-compose-Python-Binary - erhielt seit Juli 2023 keine Updates mehr und wurde aus neuen Docker-Desktop-Versionen entfernt. Es wurde durch Compose V2 ersetzt, ein Docker-CLI-Plugin, aufgerufen als docker compose - ein Leerzeichen, wo früher ein Bindestrich stand. Dockers eigener Migrationsleitfaden bestätigt, dass V2 funktional ein direkter Ersatz für V1 ist, abgesehen von der Syntaxänderung.

Wenn Sie Docker in den letzten Jahren über einen offiziellen Kanal installiert haben - Docker Engines apt-Repo, Docker Desktop, oder ein aktuelles Distro-Paket - haben Sie mit großer Sicherheit nur V2. Das docker-compose-Binary war nie da. Der Fehler bedeutet nicht "Compose fehlt", sondern "der konkrete Befehl, den Sie eingegeben haben, fehlt".

Der 30-Sekunden-Check

Bevor Sie irgendetwas ändern, klären Sie zuerst, welcher Fall bei Ihnen vorliegt:

docker compose version     # V2 - das Plugin, ohne Bindestrich
docker-compose --version   # V1 - das alte eigenständige Binary

Gibt der erste Befehl eine Version aus, haben Sie Compose, und es ist reine Syntax - jeder Befehl in jedem Skript, Alias und jeder eingeübten Gewohnheit braucht statt des Bindestrichs ein Leerzeichen. Schlagen beide Befehle fehl, springen Sie direkt zum Abschnitt "Immer noch nicht gefunden" weiter unten - das ist ein echtes Installations- oder PATH-Problem, nicht der V1/V2-Wechsel.

Beheben unter Debian und Ubuntu

sudo apt-get update
sudo apt-get install docker-compose-plugin
docker compose version

Note: Das Standardpaket docker.io in den Debian/Ubuntu-eigenen Repos hinkt oft Monate hinter der aktuellen Docker-Version her und enthält das Plugin manchmal gar nicht. Findet apt-get install docker-compose-plugin das Paket nicht, fügen Sie zuerst Dockers offizielles apt-Repository hinzu - dasselbe Repo, das auch Docker Engine selbst aktuell hält.

Beheben auf Raspberry Pi OS

Ich habe vor einiger Zeit mehrere Dienste von einem älteren Raspberry Pi auf eine Debian-Maschine umgezogen, und die alte Installationsanleitung, die ich mir gemerkt hatte - pip3 install docker-compose - installierte V1, genau das jetzt veraltete Binary. Raspberry Pi OS' ARM-Architektur wird vom docker-compose-plugin-apt-Paket von Debian/Ubuntu ebenfalls nicht bedient, daher ist der saubere Weg auf einem Pi Dockers eigenes Komfort-Skript, das die ARM-Architektur erkennt und direkt das aktuelle V2-Plugin installiert:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
docker compose version

Überspringen Sie jede Anleitung, die 2026 noch pip3 install docker-compose auf einem Pi empfiehlt - dieser Weg installiert einen unsupporteten V1-Build ohne weitere Sicherheitsupdates.

Beheben auf Synology (Container Manager)

Das ist der Fall, den die meisten Troubleshooting-Anleitungen komplett auslassen, weil Synology nicht wie eine normale Linux-Installation funktioniert. DSM 7.2 benannte das Docker-Paket in Container Manager um, und Compose läuft über dessen Projekt-Tab im DSM-Webinterface oder per SSH als docker compose - es gibt kein separates docker-compose-Binary zum Installieren, weil Synology gar kein apt zur Verfügung stellt.

So führen Sie Compose auf einem Synology-NAS über die Kommandozeile aus:

  1. SSH aktivieren unter Systemsteuerung → Terminal & SNMP.
  2. Per SSH einloggen: ssh <ihr-benutzername>@<nas-ip>.
  3. Compose ausführen mit sudo docker compose -f /pfad/zur/compose.yaml up -d - beachten Sie das Leerzeichen, und dass DSM in manchen Projekt-Tab-Versionen compose.yaml statt des älteren Namens docker-compose.yml erwartet.

Warning: Eine Suche nach "docker-compose auf Synology installieren" liefert mehrere Jahre alte Forenbeiträge, die manuelle Binary-Downloads nach /usr/local/bin vorschlagen. Auf einem aktuellen DSM-7.2+-System bringt Container Manager Compose V2 bereits mit - ein eigenständiges V1-Binary zusätzlich zu installieren ist genau das veraltete Setup, das Sie vermeiden wollen, keine Lösung.

Immer noch nicht gefunden? PATH prüfen

Seltener, aber durchaus real: Das Plugin oder Binary liegt tatsächlich auf der Festplatte, aber die PATH-Variable Ihrer Shell enthält das Verzeichnis nicht, in dem es liegt. Finden Sie es zuerst:

sudo find / -name docker-compose 2>/dev/null

Liefert das einen Pfad wie /usr/local/bin/docker-compose, fügen Sie entweder dieses Verzeichnis zu PATH hinzu (export PATH="$PATH:/usr/local/bin" an ~/.bashrc oder ~/.zshrc anhängen), oder verlinken Sie es in ein Verzeichnis, das bereits im PATH liegt:

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

Alte docker-compose-Skripte am Laufen halten

Haben Sie CI-Jobs, Deploy-Skripte oder eingeübte Gewohnheiten, die noch docker-compose mit Bindestrich aufrufen, und eine Überarbeitung aller Stellen ist heute nicht realistisch, überbrückt eine einzeilige Shell-Funktion die Lücke ohne Neuinstallation:

echo 'docker-compose() { docker compose "$@"; }' >> ~/.bashrc
source ~/.bashrc

Tip: Das leitet den alten Befehl nur an das neue Plugin weiter - es installiert nichts und reparaiert keine Skripte, die unter einer anderen Shell oder einem anderen Benutzer laufen (Cron-Jobs, systemd-Units). Dort ist es zuverlässiger, den Befehl direkt auf docker compose umzuschreiben. Startet ein Stack, der darauf aufbaut, danach Container in der falschen Reihenfolge neu, hilft unser Leitfaden zum Debuggen eines kaputten Compose-Stacks bei der nächsten Fehlerebene.

FAQ

Warum sagt docker-compose "Befehl nicht gefunden", obwohl Docker installiert ist?

Weil aktuelle Docker-Installationen Compose V2 mitbringen, ein Plugin, das als docker compose (mit Leerzeichen) aufgerufen wird - nicht das alte eigenständige docker-compose-Binary (mit Bindestrich) aus Compose V1. Docker selbst funktioniert einwandfrei; nur der konkrete Bindestrich-Befehl wurde nie installiert.

Wie erkenne ich, ob ich Compose V1 oder V2 habe?

Führen Sie docker compose version (V2, ohne Bindestrich) und docker-compose --version (V1, mit Bindestrich) aus. Welcher Befehl erfolgreich ist, zeigt Ihnen, welche Version vorliegt - es ist möglich, beide, nur V2, oder keines von beiden zu haben.

Kann ich den Befehl docker-compose nach der Installation von V2 weiter benutzen?

Nicht nativ - V2 reagiert nur auf docker compose. Mit einem Shell-Alias oder einer Funktion, die an docker compose weiterleitet, lässt sich die alte Syntax wiederherstellen - nützlich für alte Skripte, ändert aber nichts an der tatsächlichen Installation.

Unterstützt Raspberry Pi OS Docker Compose?

Ja, aber über Dockers offizielles Komfort-Skript (get.docker.com) installieren, das die ARM-Architektur des Pi erkennt und aktuelles Compose V2 installiert - nicht über den alten Weg pip3 install docker-compose, der einen unsupporteten V1-Build installiert.

Warum finde ich docker-compose nicht auf meiner Synology NAS?

Weil es dort nichts zu finden gibt. DSM 7.2 hat das Docker-Paket in Container Manager umbenannt, das Compose V2 über seinen Projekt-Tab oder per SSH als docker compose ausführt - es gibt kein eigenständiges Binary zu installieren, und manuelle V1-Installationen aus älteren Forenbeiträgen sollten vermieden werden.

Fazit

2023
das Jahr, in dem Docker den Support für das eigenständige Compose-V1-Binary beendete, laut Dockers Compose-V2-GA-Ankündigung

Fast jeder docker-compose: command not found-Fehler führt auf genau dieses Datum zurück - Sie sind auf einem System, das immer nur V2 hatte, und der Bindestrich-Befehl existiert dort schlicht nicht. Bestätigen Sie das mit docker compose version, bevor Sie irgendetwas neu installieren, und folgen Sie dann dem passenden Weg für Ihr System oben. Bauen Sie gerade erst Ihren ersten Stack auf, statt einen bestehenden zu reparieren, setzt unser Leitfaden zu Docker Compose für Self-Hosting einen Schritt früher an - und wenn danach Container in der falschen Reihenfolge neu starten, erklärt unser Leitfaden zu Docker-Compose-Restart-Policies das nächste Problem.

Ähnliche Artikel

Mehr aus Self-Hosting & Privatsphäre

Bleiben Sie auf dem Laufenden

Erhalten Sie die neuesten Artikel direkt in Ihr Postfach. Kein Spam, jederzeit abbestellbar.

Als Nächstes lesen

Docker Compose Healthchecks erklärt

Composes 'Up'-Status bedeutet nur, dass der Prozess gestartet ist. Reale interval/retries/start_period-Werte für drei Homelab-Dienste, plus die Verdrahtung von depends_on: condition: service_healthy.

Weiterlesen