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.
Eine einfache docker-compose.yaml-Datei vorbereiten
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.
Dry-run mit einem grundlegenden Compose-Befehl verwenden
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.
Ausgabe des dry-run Befehls überprüfen
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 denweb-Service zu verwendende Image korrekt erkannt hat.ports:: Dieser Abschnitt zeigt die Port-Zuordnung.published: 80gibt den Host-Port an,target: 80den Container-Port. Dies entspricht unserer Definition in derdocker-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 einimageangegeben haben, fügt Docker Compose einenbuild-Abschnitt mit dem Kontext des aktuellen Verzeichnisses hinzu. Dies ist Teil der internen Darstellung und bedeutet nicht, dass ein Image gebaut wird, wenn nur einimageangegeben wurde.restart: 'no': Docker Compose setzt die Neustart-Richtlinie standardmäßig aufno, 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.
Dry-run mit einem änderungswirksamen Befehl verwenden
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:
- Ein Standard-Netzwerk namens
my-compose-app_defaultzu erstellen - Einen Service namens
webzu erstellen - Das Image
nginx:latestzu pullen (falls es nicht bereits lokal verfügbar ist) - Einen Container namens
my-compose-app-web-1für denweb-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-runverwenden, um genau zu sehen, was Docker Compose tun wird - Fehlerbehebung: Wenn ein
docker-compose up-Befehl fehlschlägt, kanndry-runhelfen, 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.



