Docker Compose v2 - Plugin vs standalone und was heute gilt
Docker Compose v2 - Plugin vs standalone und was heute gilt
Wer länger mit Docker arbeitet, kennt docker-compose — mit Bindestrich. Neuere Installationen haben docker compose — ohne Bindestrich. Das ist kein Zufall, sondern ein Versionssprung mit Konsequenzen.
Die Geschichte
Docker Compose v1 war ein eigenständiges Python-Programm: docker-compose. Es wurde separat installiert, hatte eigene Release-Zyklen und war nicht in Docker Engine integriert. Lange Zeit war es der Standard.
Docker Compose v2 wurde in Go neu geschrieben und als Plugin direkt in die Docker CLI integriert. Der Befehl ist seither docker compose (Leerzeichen statt Bindestrich). V2 ist seit Docker Engine 20.10 verfügbar und seit 2022 der offizielle Standard. V1 ist deprecated und erhält keine Sicherheitsupdates mehr.
Version prüfen
# Plugin (v2) — als Teil von docker
docker compose version
# Docker Compose version v2.24.0
# Standalone (v1) — falls noch installiert
docker-compose --version
# docker-compose version 1.29.2
Migration: was sich ändert
Der einzige Unterschied im Alltag ist der Befehl selbst. Die docker-compose.yml bleibt identisch — kein Umbau der Konfiguration nötig.
# Alt (v1)
docker-compose up -d
docker-compose ps
docker-compose logs -f
docker-compose down
# Neu (v2)
docker compose up -d
docker compose ps
docker compose logs -f
docker compose down
Wer Skripte oder CI-Pipelines auf v1 hat, ersetzt einfach alle Vorkommen von docker-compose durch docker compose.
Installation als Plugin
Das Plugin wird mit Docker Engine mitgeliefert, wenn man über das offizielle apt-Repository installiert:
sudo apt-get install docker-compose-plugin
Auf bestehenden Installationen kann man es nachinstallieren:
sudo apt-get update && sudo apt-get install docker-compose-plugin
Warum v1 nicht mehr verwenden
- Kein Support mehr, keine Bugfixes, keine Sicherheitsupdates
- Python-Abhängigkeiten auf dem Host erforderlich
- Langsamere Ausführung
- Nicht in
dockerintegriert — kein gemeinsames CLI-Erlebnis
V1 war für seine Zeit gut. Heute gibt es keinen Grund mehr, es zu nutzen.