Wie man den docker compose alpha dry-run Befehl zum Testen von Änderungen verwendet

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie den Befehl docker compose alpha dry-run verwenden, um Änderungen an Ihrer Docker Compose-Konfiguration zu testen, ohne sie tatsächlich auszuführen. Dies ist ein wertvolles Werkzeug, um Ihre docker-compose.yaml-Datei zu überprüfen und die potenziellen Auswirkungen von Befehlen zu verstehen, bevor Sie sie anwenden.

Sie beginnen mit der Vorbereitung einer einfachen docker-compose.yaml-Datei. Anschließend verwenden Sie das dry-run-Flag mit grundlegenden Docker Compose-Befehlen, um die simulierte Ausgabe zu beobachten und zu verstehen, wie der Befehl sich verhalten würde. Abschließend wenden Sie dry-run auf einen Befehl an, der normalerweise Änderungen vornehmen würde, sodass Sie die geplanten Aktionen sehen können, ohne Ihr System zu verändern.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/NetworkOperationsGroup(["Network Operations"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") docker/NetworkOperationsGroup -.-> docker/network("Manage Networks") subgraph Lab Skills docker/ls -.-> lab-555069{{"Wie man den docker compose alpha dry-run Befehl zum Testen von Änderungen verwendet"}} docker/ps -.-> lab-555069{{"Wie man den docker compose alpha dry-run Befehl zum Testen von Änderungen verwendet"}} docker/create -.-> lab-555069{{"Wie man den docker compose alpha dry-run Befehl zum Testen von Änderungen verwendet"}} docker/pull -.-> lab-555069{{"Wie man den docker compose alpha dry-run Befehl zum Testen von Änderungen verwendet"}} docker/images -.-> lab-555069{{"Wie man den docker compose alpha dry-run Befehl zum Testen von Änderungen verwendet"}} docker/info -.-> lab-555069{{"Wie man den docker compose alpha dry-run Befehl zum Testen von Änderungen verwendet"}} docker/version -.-> lab-555069{{"Wie man den docker compose alpha dry-run Befehl zum Testen von Änderungen verwendet"}} docker/network -.-> lab-555069{{"Wie man den docker compose alpha dry-run Befehl zum Testen von Änderungen verwendet"}} end

Vorbereitung einer einfachen docker-compose.yaml-Datei

In diesem Schritt erstellen wir eine einfache docker-compose.yaml-Datei. Diese Datei definiert einen grundlegenden Service, den wir zur Demonstration der dry-run-Funktionalität von Docker Compose verwenden können.

Zuerst müssen wir Docker Compose installieren. Da es in dieser Umgebung nicht vorinstalliert ist, laden wir das Binary herunter und machen es ausführbar.

sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Dieser Befehl lädt das Docker Compose-Binary für Ihre Systemarchitektur herunter und speichert es unter /usr/local/bin/docker-compose. Der Befehl chmod +x macht die Datei ausführbar.

Überprüfen wir nun, ob Docker Compose korrekt installiert ist, indem wir die Version abfragen.

docker-compose version

Sie sollten eine Ausgabe sehen, die die installierte Version von Docker Compose anzeigt.

Als nächstes erstellen wir ein Verzeichnis für unser Projekt und wechseln hinein.

mkdir ~/project/my-compose-app
cd ~/project/my-compose-app

Wir befinden uns nun im Verzeichnis ~/project/my-compose-app, wo wir unsere docker-compose.yaml-Datei erstellen werden.

Nun erstellen wir die docker-compose.yaml-Datei mit dem nano-Editor.

nano docker-compose.yaml

Fügen Sie im nano-Editor folgenden Inhalt ein:

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

Diese docker-compose.yaml-Datei definiert einen einzelnen Service namens web. Dieser Service verwendet das Docker-Image nginx:latest und mappt Port 80 des Hosts auf Port 80 im Container.

Speichern Sie die Datei mit Strg + O, drücken Sie Enter und verlassen Sie den Editor mit Strg + X.

Wir haben nun erfolgreich eine einfache docker-compose.yaml-Datei erstellt.

Verwendung von dry-run mit einem grundlegenden Compose-Befehl

In diesem Schritt verwenden wir das dry-run-Flag mit einem grundlegenden Docker Compose-Befehl, um dessen Funktionsweise zu verstehen. Das dry-run-Flag ermöglicht es Ihnen, die Aktionen anzuzeigen, die Docker Compose ausführen würde, ohne sie tatsächlich durchzuführen. Dies ist nützlich, um die potenziellen Auswirkungen eines Befehls zu verstehen, bevor er ausgeführt wird.

Wir werden den Befehl docker-compose config mit dem dry-run-Flag verwenden. Der config-Befehl validiert und zeigt die Konfiguration der Compose-Datei an. Die Hinzufügung von dry-run ändert das Verhalten dieses Befehls nicht wesentlich, da config bereits ein nicht-destruktiver Befehl ist, aber es ist ein guter Ausgangspunkt, um die Syntax des Flags zu verstehen.

Stellen Sie zunächst sicher, dass Sie sich im Verzeichnis mit Ihrer docker-compose.yaml-Datei befinden.

cd ~/project/my-compose-app

Führen Sie nun den Befehl docker-compose config --dry-run aus.

docker-compose config --dry-run

Sie sollten die geparste Konfiguration Ihrer docker-compose.yaml-Datei in der Konsole ausgegeben sehen. Diese Ausgabe ist in diesem Fall identisch mit der Ausführung von docker-compose config ohne das dry-run-Flag, da config von Natur aus eine Dry-Run-Operation ist.

Die Ausgabe bestätigt, dass Docker Compose Ihre docker-compose.yaml-Datei erfolgreich geparst hat und die darin definierten Services und Konfigurationen versteht.

Analyse der Ausgabe des dry-run-Befehls

In diesem Schritt werden wir die Ausgabe des im vorherigen Schritt ausgeführten Befehls docker-compose config --dry-run genau untersuchen. Das Verständnis dieser Ausgabe ist entscheidend, um zu sehen, wie Docker Compose Ihre docker-compose.yaml-Datei interpretiert.

Die angezeigte Ausgabe stellt die validierte Konfiguration im YAML-Format dar. Sie zeigt, wie Docker Compose die in Ihrer Datei definierten Services, Netzwerke und Volumes versteht.

Betrachten wir die wichtigsten Teile der Ausgabe basierend auf unserer einfachen docker-compose.yaml:

services:
  web:
    build:
      context: /home/labex/project/my-compose-app
    container_name: my-compose-app-web-1
    image: nginx:latest
    ports:
      - published: 80
        target: 80
    restart: "no"

Sie sehen den Abschnitt services und darin den Service web.

  • image: nginx:latest: Dies bestätigt, dass Docker Compose das für den web-Service zu verwendende Image korrekt erkannt hat.
  • ports:: Dieser Abschnitt zeigt die Port-Zuordnung. published: 80 gibt den Host-Port an, target: 80 den Container-Port. Dies entspricht unserer Definition in der docker-compose.yaml.
  • container_name: my-compose-app-web-1: Docker Compose generiert automatisch einen Standard-Containernamen basierend auf dem Projektverzeichnisnamen und dem Servicenamen.
  • build:: Obwohl wir ein image angegeben haben, fügt Docker Compose einen build-Abschnitt mit dem Kontext des aktuellen Verzeichnisses hinzu. Dies ist Teil der internen Darstellung und bedeutet nicht, dass ein Image gebaut wird, wenn nur ein image angegeben wurde.
  • restart: 'no': Docker Compose setzt die Neustart-Richtlinie standardmäßig auf no, wenn nichts anderes angegeben ist.

Diese Ausgabe repräsentiert die finale Konfiguration, die Docker Compose verwenden würde, wenn Sie einen Befehl wie docker-compose up ausführen würden. Das dry-run-Flag zeigt bei Befehlen, die Änderungen vornehmen würden (was wir im nächsten Schritt sehen werden), die geplanten Aktionen an, nicht nur die Konfiguration.

Für den config-Befehl dient das dry-run-Flag hauptsächlich zur Validierung der Syntax und Struktur Ihrer docker-compose.yaml-Datei. Bei Syntaxfehlern würde der config-Befehl (mit oder ohne dry-run) diese melden.

Verwendung von dry-run mit einem befehl, der Änderungen vornehmen würde

In diesem Schritt verwenden wir das dry-run-Flag mit einem Docker Compose-Befehl, der normalerweise Änderungen an Ihrem System vornehmen würde, wie z.B. docker-compose up. Dies demonstriert, wie dry-run Ihnen die geplanten Aktionen anzeigen kann, ohne tatsächlich Container oder Netzwerke zu erstellen.

Der Befehl docker-compose up würde ohne dry-run die angegebenen Images herunterladen (falls nicht bereits vorhanden), Netzwerke erstellen und Container basierend auf Ihrer docker-compose.yaml-Datei starten. Durch Hinzufügen des dry-run-Flags können wir die Schritte sehen, die ausgeführt würden, ohne sie tatsächlich durchzuführen.

Stellen Sie zunächst sicher, dass Sie sich im richtigen Verzeichnis befinden:

cd ~/project/my-compose-app

Führen Sie nun den Befehl docker-compose up --dry-run aus.

docker-compose up --dry-run

Sie sehen eine Ausgabe, die die Aktionen anzeigt, die Docker Compose ausführen würde. Für unsere einfache docker-compose.yaml könnte die Ausgabe etwa so aussehen:

Would create network "my-compose-app_default"
Would create service "web"
  Would pull image "nginx:latest"
  Would create container "my-compose-app-web-1"

Diese Ausgabe zeigt deutlich, dass Docker Compose beabsichtigt:

  1. Ein Standard-Netzwerk namens my-compose-app_default zu erstellen
  2. Einen Service namens web zu erstellen
  3. Das Image nginx:latest zu pullen (falls es nicht bereits lokal verfügbar ist)
  4. Einen Container namens my-compose-app-web-1 für den web-Service zu erstellen

Beachten Sie, dass keine dieser Aktionen tatsächlich durchgeführt wird. Es wird kein Netzwerk erstellt, kein Image gepullt und kein Container gestartet. Das dry-run-Flag verhindert jegliche tatsächliche Änderung an Ihrer Docker-Umgebung.

Dies ist äußerst nützlich für:

  • Vorschau von Änderungen: Vor dem Deployment einer komplexen Anwendung können Sie dry-run verwenden, um genau zu sehen, was Docker Compose tun wird
  • Fehlerbehebung: Wenn ein docker-compose up-Befehl fehlschlägt, kann dry-run helfen, die ersten Schritte zu verstehen und potenzielle Probleme in Ihrer Konfiguration zu identifizieren
  • Lernzwecke: Es ermöglicht das Experimentieren mit verschiedenen docker-compose.yaml-Konfigurationen und das Sehen ihrer Auswirkungen ohne Systemänderungen

Sie können das dry-run-Flag auch mit anderen Docker Compose-Befehlen wie down, start, stop und rm verwenden, um zu sehen, welche Ressourcen betroffen wären.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man eine einfache docker-compose.yaml-Datei vorbereitet, indem wir zunächst Docker Compose installiert und dann ein Verzeichnis mit einer grundlegenden Nginx-Service-Definition erstellt haben. Anschließend haben wir die Verwendung des dry-run-Flags mit Docker Compose-Befehlen untersucht.

Wir haben beobachtet, wie das dry-run-Flag es uns ermöglicht, die Aktionen eines Befehls vorab zu sehen, ohne tatsächlich Änderungen am System vorzunehmen. Dies ist ein wertvolles Werkzeug, um Änderungen an unserer docker-compose.yaml-Datei zu testen und die potenziellen Auswirkungen von Befehlen vor deren Ausführung zu verstehen.