Docker Compose ist ein äußerst beliebtes Tool für die Arbeit mit Containern. Während der gewöhnliche docker
CLI interagiert mit jeweils einem Container, docker-compose
können Sie mehrere Container zusammen steuern.
Compose existiert derzeit als eigenständiges Projekt, das unabhängig von Docker vertrieben wird. Wenn Sie Compose verwenden möchten, müssen Sie es separat herunterladen. Viele Benutzer greifen am Ende direkt auf die Binärdatei zu, da die Paketmanager des Betriebssystems oft hinterherhinken, selbst wenn sie die neueste Docker-Version anbieten.
Docker Compose v2 wurde auf der DockerCon 2021 angekündigt. Es verspricht große Änderungen an der Compose-Erfahrung, indem es in den docker
integriert wird CLI. v2 enthält außerdem neue Komfortfunktionen, die Ihnen bei der Verwaltung Ihrer Container-Stacks helfen.
Der neue „docker compose“-Befehl
Docker Compose v2 bringt Compose-Funktionalität in Docker selbst. Sie können Compose überall dort verwenden, wo die neueste Docker-CLI installiert ist, es sind keine zusätzlichen Schritte erforderlich. Darunter verwendet Docker weiterhin die vom Compose-Projekt bereitgestellten Funktionen.
Vorhandenes docker-compose
Befehle sollten direkt ihrem neuen docker compose
zugeordnet werden Gegenstücke. In den meisten Fällen können Sie den Bindestrich löschen, ohne dass weitere Änderungen erforderlich sind. docker compose
unterstützt fast alle Unterbefehle und Flags von Compose v1, obwohl eine Minderheit nicht implementiert wird.
Compose v2 unterstützt weiterhin den Aufruf über docker-compose
binär. Vorhandene Workflow-Skripte sollten weiterhin funktionieren, auch wenn Sie sie nicht sofort aktualisieren, um docker compose
zu verwenden . Langfristig werden die meisten Autoren wahrscheinlich stattdessen auf die neue Form umsteigen.
Experimentieren mit Docker Compose v2
Compose v2 befindet sich derzeit in der Beta-Phase. Obwohl es sich noch in der Entwicklung befindet, wird die neue Binärdatei bereits mit Docker Desktop für Windows und Mac ausgeliefert. Desktop v3.4 hat Unterstützung für docker compose
hinzugefügt Befehle, sodass Sie es wahrscheinlich schon heute verwenden können. Die Linux-Pakete werden später im Jahr aktualisiert; ein manuelles Installationsskript ist inzwischen verfügbar.
Die docker-compose
Der Befehl kann derzeit v1 oder v2 aufrufen, standardmäßig v1. Die Option wird für eine Untergruppe von Benutzern automatisch aktiviert; es wird schließlich v2 für alle starten.
Sie können docker-compose
manuell wechseln zwischen v1 und v2 durch Ausführen von docker-compose disable-v2
oder docker-compose enable-v2
. Auf diese Weise können Sie die Kompatibilität mit allen vorhandenen Compose-Dateien aufrechterhalten, die nicht mit v2 funktionieren. docker compose
Befehle verwenden immer v2.
Spezifikationsänderungen
Um die Compose-Funktionalität in die Docker-CLI zu bringen, waren Änderungen an der Compose-Spezifikation erforderlich. Dies unterscheidet nun zwischen Befehlsimplementierungen und der docker-compose.yml
YAML-Format.
Der überarbeitete Ansatz bietet neue Möglichkeiten, zusätzliche Funktionen zu integrieren. Experimentelle Implementierungen können schneller bereitgestellt werden und das Compose-Team ist besser gerüstet, um Community-Vorschläge hinzuzufügen. Die CLI ist stärker vom YAML-Dateiformat entkoppelt, sodass alternative Implementierungen (wie docker compose
) sind eine Möglichkeit.
Über die CLI hinaus ermöglicht die Existenz der Composer-Spezifikation Cloud-Anbietern auch die Implementierung von Compose-Funktionen. Sie können jetzt docker compose up
ausführen gegen einen Cloud-basierten Docker-Kontext, um Ihre App in der Produktion zu starten. Docker verfügt über integrierte Unterstützung für Amazon ECS- und Microsoft ACI-Umgebungen.
Intern verwendet Compose v2 standardmäßig Buildkit für schnellere Builds. Die Gesamtleistung sollte schneller sein, da mehr Aufgaben parallel ausgeführt werden, wodurch die Verarbeitungszeiten verkürzt werden.
Neue Funktionen in v2
Der Wechsel von docker-compose
zu docker compose
ist nicht die einzige Änderung in v2. Es gibt auch neue Funktionen, die sich darauf auswirken, wie Sie mit Ihren Containerstapeln interagieren.
Eine Einschränkung von Compose v1 ist die Herangehensweise an Projektnamen. Wenn Sie docker-compose up -d
ausführen , stellt Compose den Projektnamen dem Dienstnamen jedes Containers voran. Dadurch wird sichergestellt, dass alle Container zusammen gruppiert werden.
v1 leitet den Projektnamen aus dem Namen Ihres Arbeitsverzeichnisses ab. Sie können manuell einen anderen Namen wählen, indem Sie COMPOSE_PROJECT_NAME
festlegen Umgebungsvariable.
v2 vereinfacht dies, indem ein CLI-Flag hinzugefügt wird, um den Projektnamen festzulegen. Fügen Sie --project-name
hinzu oder -p
um den Namen des Arbeitsverzeichnisses zu ignorieren, ohne die Umgebung zu ändern. Durch manuelles Festlegen des Projektnamens können Sie Container aus mehreren Arbeitsverzeichnissen zu einem Stack kombinieren oder mehrere Instanzen eines Container-Stacks starten.
Mit einer weiteren neuen v2-Funktion können Sie alle Compose-Stacks auf Ihrem System auflisten. Das docker compose ls
Der Befehl bietet eine Tabelle mit Projektnamen und deren Status (wird ausgeführt oder gestoppt). Dies ergänzt das docker compose ps
Befehl, der den Status von Containern in einem Stack angibt.
Compose v2 fügt auch Unterstützung für docker compose cp
hinzu . Dieser Befehl funktioniert ähnlich wie docker cp
und lässt Sie Dateien in und aus Ihren Containern kopieren:
docker cp my-container local-file.txt /path/to/container/file.txt
Zusammenfassung
Docker Compose v2 ist ein umfangreiches Upgrade, das das Container-Management-Tool komfortabler macht. Die Integration von Compose in die Docker-Haupt-CLI bedeutet, dass es überall dort verfügbar ist, wo Docker ist. Dies macht es zugänglicher und erleichtert den Einstieg.
Compose v2 bringt auch einige zusätzliche Dienstprogrammbefehle mit sich, um die Arbeit mit verschiedenen Stapeln und Containern zu erleichtern. Sie erhalten einen verbesserten Überblick darüber, was auf Ihrem System läuft. Während es sich zum Zeitpunkt des Schreibens noch in der Beta-Phase befindet, können Windows- und Mac-Benutzer heute v2 verwenden, während Linux-Benutzer das neueste Build von GitHub herunterladen können.