Wie man den docker compose alpha viz Befehl zur Visualisierung von Compose-Dateien 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 Ihre Docker Compose-Dateien effektiv mit dem Befehl docker-compose alpha viz visualisieren können. Diese praktische Übung führt Sie durch die Erstellung grundlegender Graphen zur Darstellung Ihrer Services und zeigt, wie Sie diese Visualisierungen schrittweise erweitern, indem Sie Service-Images, Netzwerke und Ports einbeziehen. Sie werden außerdem lernen, wie Sie die Einrückung des Ausgabegraphen anpassen können, um die Lesbarkeit zu verbessern.

Am Ende dieses Labs werden Sie in der Lage sein, klare und informative visuelle Darstellungen Ihrer Docker Compose-Konfigurationen zu erstellen, wodurch die Beziehungen und Abhängigkeiten innerhalb Ihrer Multi-Container-Anwendungen leichter verständlich werden.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/NetworkOperationsGroup(["Network Operations"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/port("List Container Ports") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/VolumeOperationsGroup -.-> docker/volume("Manage Volumes") docker/NetworkOperationsGroup -.-> docker/network("Manage Networks") subgraph Lab Skills docker/ls -.-> lab-555072{{"Wie man den docker compose alpha viz Befehl zur Visualisierung von Compose-Dateien verwendet"}} docker/ps -.-> lab-555072{{"Wie man den docker compose alpha viz Befehl zur Visualisierung von Compose-Dateien verwendet"}} docker/port -.-> lab-555072{{"Wie man den docker compose alpha viz Befehl zur Visualisierung von Compose-Dateien verwendet"}} docker/images -.-> lab-555072{{"Wie man den docker compose alpha viz Befehl zur Visualisierung von Compose-Dateien verwendet"}} docker/volume -.-> lab-555072{{"Wie man den docker compose alpha viz Befehl zur Visualisierung von Compose-Dateien verwendet"}} docker/network -.-> lab-555072{{"Wie man den docker compose alpha viz Befehl zur Visualisierung von Compose-Dateien verwendet"}} end

Grundlegenden Graphen aus einer Compose-Datei generieren

In diesem Schritt lernen Sie, wie Sie eine grundlegende graphische Darstellung Ihrer Docker Compose-Datei erstellen. Dies ist nützlich, um die Beziehungen zwischen Ihren Services, Netzwerken und Volumes zu visualisieren.

Zuerst müssen Sie Docker Compose installieren. Da es in der LabEx-Umgebung nicht vorinstalliert ist, installieren Sie es mit pip.

sudo apt update
sudo apt install -y python3-pip
pip install docker-compose

Nach Abschluss der Installation können Sie diese überprüfen, indem Sie die Version von Docker Compose abfragen.

docker-compose --version

Sie sollten eine Ausgabe ähnlich zu docker-compose version 1.29.2, build 5becea4c sehen.

Erstellen wir nun eine einfache Docker Compose-Datei. Navigieren Sie zu Ihrem Projektverzeichnis und erstellen Sie eine Datei namens docker-compose.yml.

cd ~/project
nano docker-compose.yml

Fügen Sie folgenden Inhalt zur docker-compose.yml-Datei hinzu:

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
  app:
    image: ubuntu:latest
    command: sleep infinity

Diese docker-compose.yml-Datei definiert zwei Services: web mit dem nginx:latest-Image und app mit dem ubuntu:latest-Image. Der web-Service mappt Port 80 des Hosts auf Port 80 im Container. Der app-Service führt einfach den Befehl sleep infinity aus, um den Container am Laufen zu halten.

Um einen grundlegenden Graphen aus dieser Compose-Datei zu generieren, verwenden Sie den Befehl docker-compose config mit dem --graph-Flag. Dieser Befehl analysiert die Compose-Datei und gibt eine graphische Darstellung im DOT-Format aus.

docker-compose config --graph

Die Ausgabe erfolgt in der DOT-Sprache, einer Graph-Beschreibungssprache. Sie zeigt die Services und ihre grundlegenden Verbindungen. Beispielsweise könnte die Ausgabe so aussehen:

digraph {
  compound=true
  "web" [label="web"]
  "app" [label="app"]
  "web" -> "app" [label="depends_on"]
}

Diese DOT-Ausgabe repräsentiert einen gerichteten Graphen, bei dem web und app Knoten sind und eine gerichtete Kante von web zu app mit der Beschriftung "depends_on" existiert. Obwohl dieses einfache Beispiel keine expliziten Abhängigkeiten definiert, kann docker-compose config --graph einige Beziehungen ableiten.

Service-Images in den Graphen einbeziehen

In diesem Schritt lernen Sie, wie Sie die Service-Images in den generierten Graphen aufnehmen können. Standardmäßig zeigt der Basisgraph nur die Servicenamen an. Durch die Einbeziehung der Image-Namen erhalten Sie mehr Kontext darüber, was jeder Service darstellt.

Sie werden weiterhin die im vorherigen Schritt erstellte docker-compose.yml-Datei verwenden.

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
  app:
    image: ubuntu:latest
    command: sleep infinity

Um die Service-Images in die Graph-Ausgabe aufzunehmen, müssen Sie das Flag --images mit dem Befehl docker-compose config --graph verwenden.

docker-compose config --graph --images

Die Ausführung dieses Befehls generiert die DOT-Graph-Ausgabe, wobei diesmal die Knoten, die die Services repräsentieren, auch die Image-Namen enthalten. Die Ausgabe ähnelt der des vorherigen Schritts, jedoch mit zusätzlichen Informationen in den Knotendefinitionen.

Beispielsweise könnte die Ausgabe nun wie folgt aussehen:

digraph {
  compound=true
  "web" [label="web\nnginx:latest"]
  "app" [label="app\nubuntu:latest"]
  "web" -> "app" [label="depends_on"]
}

Beachten Sie, dass das label-Attribut für jeden Knoten nun sowohl den Service-Namen als auch den Image-Namen enthält, getrennt durch ein Zeilenumbruchzeichen (\n). Dadurch wird der Graph informativer, da er zeigt, welches Docker-Image für jeden Service verwendet wird.

Dies ist eine einfache Möglichkeit, Ihre Docker Compose-Graphvisualisierung mit weiteren Details anzureichern, wodurch Sie die Komponenten Ihrer Anwendung auf einen Blick verstehen können.

Service-Netzwerke in den Graphen einbeziehen

In diesem Schritt lernen Sie, wie Sie die Netzwerke, mit denen Ihre Services verbunden sind, in den generierten Graphen aufnehmen können. Das Verständnis der Netzwerktopologie ist entscheidend für das Debugging und die Visualisierung des Kommunikationsflusses zwischen Ihren Containern.

Sie werden die docker-compose.yml-Datei anpassen, um ein Netzwerk explizit zu definieren und die Services damit zu verbinden.

Öffnen Sie die docker-compose.yml-Datei in Ihrem Projektverzeichnis:

nano ~/project/docker-compose.yml

Passen Sie den Inhalt an, um eine Netzwerkdefinition einzufügen und die Services mit diesem Netzwerk zu verbinden:

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    networks:
      - my_network
  app:
    image: ubuntu:latest
    command: sleep infinity
    networks:
      - my_network

networks:
  my_network:
    driver: bridge

In dieser aktualisierten docker-compose.yml haben wir einen networks-Abschnitt auf oberster Ebene hinzugefügt, um ein Netzwerk namens my_network mit dem bridge-Treiber zu definieren. Außerdem haben wir unter jedem Service (web und app) einen networks-Schlüssel hinzugefügt, um anzugeben, dass sie mit my_network verbunden sein sollen.

Um nun die Netzwerkinformationen in die Graph-Ausgabe aufzunehmen, verwenden Sie das Flag --networks zusammen mit dem --graph-Flag.

docker-compose config --graph --networks

Die Ausführung dieses Befehls generiert die DOT-Graph-Ausgabe, die nun Knoten für das Netzwerk und Kanten enthält, die zeigen, welche Services damit verbunden sind. Die Ausgabe wird komplexer sein als zuvor und die Netzwerkverbindungen veranschaulichen.

Sie werden Knoten für die Services (web und app) und einen Knoten für das Netzwerk (my_network) sehen. Es wird Kanten geben, die die Services mit dem Netzwerk verbinden und deren Zugehörigkeit zu diesem Netzwerk anzeigen. Diese Visualisierung hilft Ihnen zu erkennen, wie Ihre Services auf Netzwerkebene isoliert oder verbunden sind.

Service-Ports in den Graphen einbeziehen

In diesem Schritt lernen Sie, wie Sie die exponierten und veröffentlichten Ports Ihrer Services in den generierten Graphen aufnehmen können. Die Visualisierung der Ports hilft zu verstehen, wie Ihre Services von außerhalb des Docker-Netzwerks oder von anderen Services aus erreichbar sind.

Sie verwenden weiterhin die docker-compose.yml-Datei aus den vorherigen Schritten.

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    networks:
      - my_network
  app:
    image: ubuntu:latest
    command: sleep infinity
    networks:
      - my_network

networks:
  my_network:
    driver: bridge

Um die Service-Ports in die Graph-Ausgabe aufzunehmen, verwenden Sie das Flag --ports zusammen mit dem --graph-Flag. Sie können mehrere Flags kombinieren, um verschiedene Informationstypen im Graphen darzustellen. Lassen Sie uns Images, Netzwerke und Ports im Graphen einbeziehen.

docker-compose config --graph --images --networks --ports

Die Ausführung dieses Befehls generiert die DOT-Graph-Ausgabe, die nun Informationen zu den Ports jedes Services enthält. Die Ausgabe wird noch detaillierter sein und Servicenamen, Image-Namen, Netzwerkverbindungen sowie Port-Mappings anzeigen.

Für den web-Service sehen Sie das Port-Mapping 80:80 in seiner Knotendefinition. Dies zeigt an, dass Port 80 auf dem Host mit Port 80 im web-Container verbunden ist.

Die DOT-Ausgabe für den web-Service-Knoten könnte wie folgt aussehen:

"web" [label="web\nnginx:latest\n80:80"]

Durch die Einbeziehung der Ports in den Graphen erhalten Sie ein klareres Bild davon, wie Ihre Services exponiert sind und wie externer Traffic oder Traffic von anderen Containern sie erreichen kann. Dies ist besonders nützlich für die Fehlerbehebung bei Konnektivitätsproblemen oder zum Verständnis der externen Schnittstelle eines Services.

Einrückung im Ausgabegraphen anpassen

In diesem Schritt lernen Sie, wie Sie die Einrückung der generierten DOT-Graph-Ausgabe anpassen können. Während die Standardeinzug normalerweise akzeptabel ist, möchten Sie diese möglicherweise für eine bessere Lesbarkeit oder zur Einhaltung spezifischer Formatierungsstandards anpassen, falls Sie die Ausgabe weiterverarbeiten möchten.

Sie verwenden weiterhin die docker-compose.yml-Datei aus den vorherigen Schritten.

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    networks:
      - my_network
  app:
    image: ubuntu:latest
    command: sleep infinity
    networks:
      - my_network

networks:
  my_network:
    driver: bridge

Um die Einrückung der Graph-Ausgabe anzupassen, können Sie das Flag --indent gefolgt von der Anzahl der gewünschten Leerzeichen verwenden. Lassen Sie uns den Graphen mit Images, Netzwerken und Ports generieren und die Einrückung auf 4 Leerzeichen setzen.

docker-compose config --graph --images --networks --ports --indent 4

Die Ausführung dieses Befehls erzeugt denselben Graph-Inhalt wie im vorherigen Schritt, aber die Zeilen in der DOT-Ausgabe werden mit 4 Leerzeichen eingerückt sein. Vergleichen Sie die Ausgabe dieses Befehls mit der Ausgabe aus dem vorherigen Schritt, um den Unterschied in der Einrückung zu sehen.

Ein Abschnitt der Ausgabe könnte beispielsweise mit 4 Leerzeichen Einzug nun so aussehen:

digraph {
    compound=true
    "web" [label="web\nnginx:latest\n80:80"]
    "app" [label="app\nubuntu:latest"]
    "my_network" [label="my_network"]
    "web" -> "my_network" [label="network"]
    "app" -> "my_network" [label="network"]
    "web" -> "app" [label="depends_on"]
}

Sie können mit verschiedenen Einrückungswerten experimentieren, um zu sehen, wie sich dies auf die Ausgabeformatierung auswirkt. Diese Option dient hauptsächlich ästhetischen Zwecken oder für Tools, die einen bestimmten Einrückungsstil für DOT-Dateien erfordern.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie Docker Compose-Dateien mit dem Befehl docker-compose config --graph visualisieren können. Sie begannen mit der Installation von Docker Compose und der Erstellung einer grundlegenden docker-compose.yml-Datei mit zwei Services. Anschließend erzeugten Sie eine grundlegende Graph-Darstellung dieser Datei im DOT-Format, die die Services und ihre Beziehungen visuell darstellt.

Aufbauend auf der grundlegenden Visualisierung haben Sie untersucht, wie zusätzliche Details in den Graphen aufgenommen werden können. Dazu gehörten die Einbindung von Service-Images, Netzwerken und Ports in die visuelle Ausgabe, was eine umfassendere Ansicht der Konfiguration der Compose-Datei ermöglicht. Abschließend lernten Sie, wie Sie die Einrückung des Ausgabegraphen für eine bessere Lesbarkeit anpassen können.