So verwenden Sie den docker stack config-Befehl, um zusammengeführte Compose-Dateien zu überprüfen

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 stack config verwenden, um die endgültige, zusammengeführte Konfiguration Ihrer Docker Compose-Dateien zu untersuchen. Dies ist eine entscheidende Fähigkeit, um zu verstehen, wie Docker Ihre Compose-Definitionen interpretiert, insbesondere wenn Sie mit mehreren Dateien oder Umgebungsvariablen arbeiten. Sie beginnen damit, die Konfiguration aus einer einzelnen Compose-Datei auszugeben, einschließlich der erforderlichen Schritte zur Installation von Docker Compose in der LabEx-Umgebung.

Danach werden Sie untersuchen, wie Sie die Konfiguration aus mehreren Compose-Dateien zusammenführen und ausgeben können, um zu zeigen, wie Docker Definitionen aus verschiedenen Quellen kombiniert. Sie lernen auch, wie Sie die Konfiguration direkt aus der Standardeingabe ausgeben können und wie Sie die Interpolation von Umgebungsvariablen beim Generieren der Konfigurationsausgabe überspringen können. Diese Schritte geben Ihnen ein umfassendes Verständnis der Möglichkeiten des Befehls docker stack config zum Debuggen und Verifizieren Ihrer Docker Compose-Setups.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/exec("Execute Command in Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/VolumeOperationsGroup -.-> docker/volume("Manage Volumes") subgraph Lab Skills docker/run -.-> lab-555233{{"So verwenden Sie den docker stack config-Befehl, um zusammengeführte Compose-Dateien zu überprüfen"}} docker/ls -.-> lab-555233{{"So verwenden Sie den docker stack config-Befehl, um zusammengeführte Compose-Dateien zu überprüfen"}} docker/exec -.-> lab-555233{{"So verwenden Sie den docker stack config-Befehl, um zusammengeführte Compose-Dateien zu überprüfen"}} docker/create -.-> lab-555233{{"So verwenden Sie den docker stack config-Befehl, um zusammengeführte Compose-Dateien zu überprüfen"}} docker/volume -.-> lab-555233{{"So verwenden Sie den docker stack config-Befehl, um zusammengeführte Compose-Dateien zu überprüfen"}} end

Ausgabe der endgültigen Konfiguration aus einer einzelnen Compose-Datei

In diesem Schritt lernen Sie, wie Sie die endgültige Konfiguration aus einer einzelnen Docker Compose-Datei ausgeben. Dies ist nützlich für das Debugging oder das Verständnis des endgültigen Zustands Ihrer Compose-Datei, nachdem alle Variablen und Erweiterungen verarbeitet wurden.

Zunächst installieren wir Docker Compose. Da es in der LabEx-VM-Umgebung nicht vorinstalliert ist, müssen wir es herunterladen und installieren. Wir werden die neueste stabile Version herunterladen.

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

Dieser Befehl lädt die Docker Compose-Binary aus dem offiziellen GitHub-Repository herunter. $(uname -s) und $(uname -m) werden verwendet, um das Betriebssystem und die Architektur der VM zu ermitteln und sicherzustellen, dass Sie die richtige Binary herunterladen.

Als nächstes müssen wir der heruntergeladenen Binary ausführbare Berechtigungen geben.

sudo chmod +x /usr/local/bin/docker-compose

Dieser Befehl macht den docker-compose-Befehl ausführbar.

Jetzt überprüfen wir die Installation, indem wir die Version prüfen.

docker-compose --version

Sie sollten die installierte Version von Docker Compose in der Konsole sehen.

Bevor wir die Konfiguration ausgeben können, benötigen wir eine Docker Compose-Datei. Erstellen wir eine einfache in das Verzeichnis ~/project.

nano ~/project/docker-compose.yaml

Fügen Sie den folgenden Inhalt in die docker-compose.yaml-Datei ein:

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

Dies ist eine einfache Compose-Datei, die einen einzelnen Service namens web mit dem nginx:latest-Image definiert und Port 80 auf dem Host auf Port 80 im Container abbildet.

Speichern Sie die Datei, indem Sie Strg + X, dann Y und Enter drücken.

Jetzt navigieren Sie in das Verzeichnis ~/project, in dem Sie die docker-compose.yaml-Datei gespeichert haben.

cd ~/project

Um die endgültige Konfiguration aus dieser Compose-Datei auszugeben, verwenden wir den Befehl docker-compose config.

docker-compose config

Dieser Befehl liest die docker-compose.yaml-Datei im aktuellen Verzeichnis und gibt die endgültige zusammengeführte Konfiguration an die Standardausgabe aus. Sie sollten den YAML-Inhalt Ihrer docker-compose.yaml-Datei sehen, möglicherweise mit einigen zusätzlichen Standardwerten, die von Docker Compose hinzugefügt wurden.

Zusammenführen und Ausgabe der Konfiguration aus mehreren Compose-Dateien

In diesem Schritt lernen Sie, wie Sie Konfigurationen aus mehreren Docker Compose-Dateien zusammenführen und die endgültige kombinierte Konfiguration ausgeben. Dies ist eine leistungsstarke Funktion, die es Ihnen ermöglicht, eine Basis-Konfiguration zu definieren und diese dann mit zusätzlichen Dateien zu überschreiben oder zu erweitern. Dies ist nützlich für die Verwaltung unterschiedlicher Umgebungen (z. B. Entwicklung, Staging, Produktion).

Wir werden weiterhin im Verzeichnis ~/project arbeiten. Im vorherigen Schritt haben wir eine docker-compose.yaml-Datei erstellt. Jetzt erstellen wir eine weitere Compose-Datei, um die Basis-Konfiguration zu erweitern. Wir nennen sie docker-compose.override.yaml.

nano ~/project/docker-compose.override.yaml

Fügen Sie den folgenden Inhalt in die docker-compose.override.yaml-Datei ein:

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html

Diese Überschreibungsdatei modifiziert den in docker-compose.yaml definierten web-Service. Sie ändert die Host-Port-Zuordnung von 80 auf 8080 und fügt eine Volume-Mount hinzu, um statischen HTML-Inhalt aus einem lokalen Verzeichnis namens html zu servieren.

Speichern Sie die Datei, indem Sie Strg + X, dann Y und Enter drücken.

Jetzt erstellen wir das html-Verzeichnis und eine einfache index.html-Datei darin.

mkdir ~/project/html
nano ~/project/html/index.html

Fügen Sie den folgenden Inhalt in ~/project/html/index.html ein:

<h1>Hello from Nginx!</h1>

Speichern Sie die Datei, indem Sie Strg + X, dann Y und Enter drücken.

Standardmäßig sucht Docker Compose automatisch nach docker-compose.yaml und docker-compose.override.yaml im aktuellen Verzeichnis und führt sie zusammen. Die Konfigurationen in der Überschreibungsdatei haben Vorrang.

Um die zusammengeführte Konfiguration zu sehen, stellen Sie sicher, dass Sie sich im Verzeichnis ~/project befinden, und führen Sie erneut den Befehl docker-compose config aus.

cd ~/project
docker-compose config

Sie sollten jetzt die kombinierte Konfiguration sehen, bei der der web-Service die Port-Zuordnung 8080:80 und die Volume-Mount ./html:/usr/share/nginx/html hat.

Sie können auch explizit angeben, welche Compose-Dateien Sie mit der Option -f verwenden möchten. Die Reihenfolge, in der Sie die Dateien angeben, ist wichtig, da spätere Dateien frühere überschreiben.

Beispielsweise können Sie die folgenden Befehle ausführen, um docker-compose.yaml und docker-compose.override.yaml explizit zusammenzuführen:

docker-compose -f docker-compose.yaml -f docker-compose.override.yaml config

In diesem Fall wird die gleiche zusammengeführte Ausgabe erzeugt wie beim Ausführen von docker-compose config ohne die Option -f, da docker-compose.override.yaml automatisch erkannt und nach docker-compose.yaml zusammengeführt wird.

Ausgabe der Konfiguration aus der Standardeingabe (stdin)

In diesem Schritt lernen Sie, wie Sie die endgültige Konfiguration aus einer Docker Compose-Datei ausgeben, die über die Standardeingabe (stdin) bereitgestellt wird. Dies ist nützlich, wenn Sie eine Compose-Datei dynamisch generieren möchten oder die Ausgabe eines anderen Befehls direkt an docker-compose config weiterleiten möchten.

Wir werden weiterhin im Verzeichnis ~/project arbeiten. Anstatt aus einer Datei zu lesen, leiten wir den Inhalt einer Compose-Konfiguration direkt an den Befehl docker-compose config weiter.

Lassen Sie uns den Befehl cat verwenden, um den Inhalt unserer docker-compose.yaml-Datei auszugeben und ihn an docker-compose config zu leiten.

cd ~/project
cat docker-compose.yaml | docker-compose config -f -

In diesem Befehl:

  • cat docker-compose.yaml gibt den Inhalt der docker-compose.yaml-Datei an die Standardausgabe aus.
  • | ist der Pipe-Operator, der die Standardausgabe des cat-Befehls an die Standardeingabe des docker-compose config-Befehls leitet.
  • docker-compose config -f - teilt docker-compose config mit, die Konfiguration aus der Standardeingabe (-) anstatt aus einer Datei zu lesen.

Sie sollten die gleiche Ausgabe sehen wie beim Ausführen von docker-compose config im ersten Schritt, also die Konfiguration aus docker-compose.yaml.

Sie können auch direkt eine andere Konfiguration weiterleiten. Beispielsweise leiten wir eine einfache Konfiguration für einen redis-Service weiter.

echo "version: '3.8'\nservices:\n  redis:\n    image: redis:latest" | docker-compose config -f -

In diesem Befehl:

  • echo "version: '3.8'\nservices:\n redis:\n image: redis:latest" gibt die YAML-Zeichenfolge für eine einfache Compose-Datei mit einem redis-Service aus. Das \n erzeugt Zeilenumbrüche in der Ausgabe.
  • | leitet diese Zeichenfolge an den docker-compose config-Befehl weiter.
  • docker-compose config -f - liest die Konfiguration aus der Standardeingabe.

Die Ausgabe sollte die YAML-Konfiguration für den redis-Service sein.

Diese Methode ist besonders nützlich, wenn Sie Compose-Konfigurationen programmgesteuert generieren oder wenn Sie eine Konfiguration schnell testen möchten, ohne sie in einer Datei zu speichern.

Ausgabe der zusammengeführten Konfiguration ohne Variablenersetzung

In diesem Schritt lernen Sie, wie Sie die zusammengeführte Konfiguration aus mehreren Docker Compose-Dateien ausgeben, während Sie die Variablenersetzung überspringen. Standardmäßig ersetzt docker-compose config Umgebungsvariablen. Das Überspringen der Variablenersetzung kann nützlich sein, wenn Sie die Rohkonfiguration mit den noch vorhandenen Variablen sehen möchten, beispielsweise beim Debuggen oder beim Generieren einer Vorlage.

Wir werden weiterhin im Verzeichnis ~/project mit unseren docker-compose.yaml- und docker-compose.override.yaml-Dateien arbeiten.

Zunächst fügen wir eine Umgebungsvariable zu unserer docker-compose.yaml-Datei hinzu, um die Variablenersetzung zu demonstrieren.

nano ~/project/docker-compose.yaml

Ändern Sie die docker-compose.yaml-Datei, um eine Umgebungsvariable im Image-Namen einzubeziehen:

version: "3.8"
services:
  web:
    image: nginx:${NGINX_VERSION:-latest}
    ports:
      - "80:80"

Hier ist ${NGINX_VERSION:-latest} eine Variable, die durch den Wert der Umgebungsvariable NGINX_VERSION ersetzt wird. Wenn NGINX_VERSION nicht gesetzt ist, wird der Standardwert latest verwendet.

Speichern Sie die Datei, indem Sie Strg + X, dann Y und Enter drücken.

Jetzt setzen wir die Umgebungsvariable NGINX_VERSION und führen dann docker-compose config aus, um die Variablenersetzung in Aktion zu sehen.

cd ~/project
export NGINX_VERSION=1.21
docker-compose config

Sie sollten die zusammengeführte Konfiguration sehen, und der Image-Name für den web-Service sollte jetzt nginx:1.21 sein.

Um die zusammengeführte Konfiguration ohne Variablenersetzung auszugeben, verwenden wir die Option --no-interpolate mit dem Befehl docker-compose config.

docker-compose --no-interpolate config

Diesmal sollte die Ausgabe den Image-Namen als nginx:${NGINX_VERSION:-latest} anzeigen, wobei der Variablenplatzhalter noch vorhanden ist, auch wenn die Umgebungsvariable NGINX_VERSION gesetzt ist.

Diese Option ist hilfreich, wenn Sie die genaue Konfiguration sehen möchten, wie sie in Ihren Compose-Dateien geschrieben ist, bevor eine Variablenersetzung stattfindet.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie den Befehl docker-compose config verwenden, um die endgültige Konfiguration von Docker Compose-Dateien zu überprüfen. Sie haben begonnen, indem Sie Docker Compose in der LabEx-VM-Umgebung installiert haben. Dabei haben Sie sichergestellt, dass Sie die richtige Binärdatei für die Systemarchitektur heruntergeladen und ihr ausführbare Berechtigungen erteilt haben. Anschließend haben Sie die Installation überprüft, indem Sie die Version geprüft haben.

Nach der Installation haben Sie eine einfache docker-compose.yaml-Datei erstellt, die einen grundlegenden Web-Service definiert. Anschließend haben Sie den Befehl docker-compose config verwendet, um die endgültige Konfiguration aus dieser einzelnen Compose-Datei auszugeben. Dadurch haben Sie gezeigt, wie Sie den verarbeiteten Zustand Ihrer Compose-Definition anzeigen können.