Comment utiliser la commande docker compose alpha viz pour visualiser les fichiers compose

DockerDockerBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce lab, vous apprendrez à visualiser efficacement vos fichiers Docker Compose en utilisant la commande docker-compose alpha viz. Cette expérience pratique vous guidera à travers la génération de graphiques de base pour représenter vos services, puis améliorera progressivement ces visualisations en incluant les images de service, les réseaux et les ports. Vous découvrirez également comment personnaliser l'indentation du graphe de sortie pour une meilleure lisibilité.

À la fin de ce lab, vous serez capable de créer des représentations visuelles claires et informatives de vos configurations Docker Compose, facilitant ainsi la compréhension des relations et dépendances au sein de vos applications multi-conteneurs.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker(("Docker")) -.-> docker/NetworkOperationsGroup(["Network 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{{"Comment utiliser la commande docker compose alpha viz pour visualiser les fichiers compose"}} docker/ps -.-> lab-555072{{"Comment utiliser la commande docker compose alpha viz pour visualiser les fichiers compose"}} docker/port -.-> lab-555072{{"Comment utiliser la commande docker compose alpha viz pour visualiser les fichiers compose"}} docker/images -.-> lab-555072{{"Comment utiliser la commande docker compose alpha viz pour visualiser les fichiers compose"}} docker/volume -.-> lab-555072{{"Comment utiliser la commande docker compose alpha viz pour visualiser les fichiers compose"}} docker/network -.-> lab-555072{{"Comment utiliser la commande docker compose alpha viz pour visualiser les fichiers compose"}} end

Générer un graphe de base à partir d'un fichier compose

Dans cette étape, vous apprendrez à générer une représentation graphique de base de votre fichier Docker Compose. Ceci est utile pour visualiser les relations entre vos services, réseaux et volumes.

Tout d'abord, vous devez installer Docker Compose. Comme il n'est pas préinstallé dans l'environnement LabEx, vous l'installerez en utilisant pip.

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

Une fois l'installation terminée, vous pouvez vérifier l'installation en consultant la version de Docker Compose.

docker-compose --version

Vous devriez voir une sortie similaire à docker-compose version 1.29.2, build 5becea4c.

Maintenant, créons un fichier Docker Compose simple. Accédez à votre répertoire de projet et créez un fichier nommé docker-compose.yml.

cd ~/project
nano docker-compose.yml

Ajoutez le contenu suivant au fichier docker-compose.yml :

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

Ce fichier docker-compose.yml définit deux services : web utilisant l'image nginx:latest et app utilisant l'image ubuntu:latest. Le service web mappe le port 80 de l'hôte vers le port 80 du conteneur. Le service app exécute simplement la commande sleep infinity pour maintenir le conteneur en fonctionnement.

Pour générer un graphe de base à partir de ce fichier compose, vous utiliserez la commande docker-compose config avec l'option --graph. Cette commande analyse le fichier compose et produit une représentation graphique au format DOT.

docker-compose config --graph

La sortie sera en langage DOT, un langage de description de graphes. Elle montrera les services et leurs connexions de base. Par exemple, vous pourriez voir quelque chose comme :

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

Cette sortie DOT représente un graphe orienté où web et app sont des nœuds, avec une arête orientée de web vers app étiquetée "depends_on". Bien que cet exemple simple ne définisse pas explicitement de dépendances, docker-compose config --graph peut inférer certaines relations.

Inclure les images des services dans le graphe

Dans cette étape, vous apprendrez à inclure les images des services dans le graphe généré. Par défaut, le graphe de base n'affiche que les noms des services. L'inclusion des noms d'images fournit plus de contexte sur ce que représente chaque service.

Vous continuerez à utiliser le fichier docker-compose.yml créé à l'étape précédente.

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

Pour inclure les images des services dans la sortie du graphe, vous devez utiliser l'option --images avec la commande docker-compose config --graph.

docker-compose config --graph --images

L'exécution de cette commande générera la sortie du graphe DOT, mais cette fois, les nœuds représentant les services incluront également les noms des images. La sortie sera similaire à l'étape précédente, mais avec des informations supplémentaires dans les définitions des nœuds.

Par exemple, la sortie pourrait maintenant ressembler à ceci :

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

Notez que l'attribut label pour chaque nœud inclut désormais à la fois le nom du service et le nom de l'image, séparés par un caractère de nouvelle ligne (\n). Cela rend le graphe plus informatif en montrant quelle image Docker est utilisée pour chaque service.

C'est une manière simple d'ajouter plus de détails à votre visualisation de graphe Docker Compose, vous aidant à comprendre les composants de votre application d'un seul coup d'œil.

Inclure les réseaux des services dans le graphe

Dans cette étape, vous apprendrez à inclure les réseaux auxquels vos services sont connectés dans le graphe généré. Comprendre la topologie réseau est crucial pour le débogage et la visualisation des flux de communication entre vos conteneurs.

Vous allez modifier le fichier docker-compose.yml pour définir explicitement un réseau et y connecter les services.

Ouvrez le fichier docker-compose.yml dans votre répertoire de projet :

nano ~/project/docker-compose.yml

Modifiez le contenu pour inclure une définition de réseau et connecter les services à ce réseau :

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

Dans cette version mise à jour du docker-compose.yml, nous avons ajouté une section networks au niveau principal pour définir un réseau nommé my_network utilisant le pilote bridge. Nous avons également ajouté une clé networks sous chaque service (web et app) pour spécifier qu'ils doivent être connectés à my_network.

Maintenant, pour inclure les informations réseau dans la sortie du graphe, vous utiliserez l'option --networks avec l'option --graph.

docker-compose config --graph --networks

L'exécution de cette commande générera la sortie du graphe DOT, qui inclura désormais des nœuds représentant le réseau et des arêtes montrant quels services y sont connectés. La sortie sera plus complexe qu'auparavant, illustrant les connexions réseau.

Vous verrez des nœuds pour les services (web et app) et un nœud pour le réseau (my_network). Il y aura des arêtes connectant les services au réseau, indiquant leur appartenance à ce réseau. Cette visualisation vous aide à voir comment vos services sont isolés ou connectés au niveau réseau.

Inclure les ports des services dans le graphe

Dans cette étape, vous apprendrez à inclure les ports exposés et publiés de vos services dans le graphe généré. Visualiser les ports permet de comprendre comment vos services sont accessibles depuis l'extérieur du réseau Docker ou depuis d'autres services.

Vous continuerez à utiliser le fichier docker-compose.yml des étapes précédentes.

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

Pour inclure les ports des services dans la sortie du graphe, vous utiliserez l'option --ports avec l'option --graph. Vous pouvez combiner plusieurs options pour inclure différents types d'informations dans le graphe. Incluons les images, réseaux et ports dans le graphe.

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

L'exécution de cette commande générera la sortie du graphe DOT, qui inclura désormais les informations sur les ports de chaque service. La sortie sera encore plus détaillée, montrant les noms des services, les noms d'images, les connexions réseau et les mappages de ports.

Pour le service web, vous verrez le mappage de ports 80:80 inclus dans sa définition de nœud. Cela indique que le port 80 de l'hôte est mappé au port 80 à l'intérieur du conteneur web.

La sortie DOT pour le nœud du service web pourrait ressembler à ceci :

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

En incluant les ports dans le graphe, vous obtenez une vision plus claire de la manière dont vos services sont exposés et comment le trafic externe ou le trafic d'autres conteneurs peut les atteindre. Ceci est particulièrement utile pour déboguer les problèmes de connectivité ou comprendre l'interface externe du service.

Personnaliser l'indentation dans le graphe de sortie

Dans cette étape, vous apprendrez à personnaliser l'indentation du graphe DOT généré. Bien que l'indentation par défaut soit généralement acceptable, vous pourriez vouloir l'ajuster pour une meilleure lisibilité ou pour respecter des standards de formatage spécifiques si vous prévoyez de traiter la sortie ultérieurement.

Vous continuerez à utiliser le fichier docker-compose.yml des étapes précédentes.

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

Pour personnaliser l'indentation du graphe de sortie, vous pouvez utiliser l'option --indent suivie du nombre d'espaces souhaité pour l'indentation. Générons le graphe avec les images, réseaux et ports inclus, et définissons l'indentation à 4 espaces.

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

L'exécution de cette commande produira le même contenu de graphe que dans l'étape précédente, mais les lignes dans la sortie DOT seront indentées avec 4 espaces. Comparez la sortie de cette commande avec celle de l'étape précédente pour voir la différence d'indentation.

Par exemple, une section de la sortie pourrait maintenant ressembler à ceci avec une indentation de 4 espaces :

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"]
}

Vous pouvez expérimenter avec différentes valeurs d'indentation pour voir comment cela affecte le formatage de la sortie. Cette option est principalement destinée à des fins esthétiques ou pour des outils nécessitant un style d'indentation spécifique pour les fichiers DOT.

Résumé

Dans ce lab, vous avez appris à visualiser des fichiers Docker Compose en utilisant la commande docker-compose config --graph. Vous avez commencé par installer Docker Compose et créer un fichier docker-compose.yml basique avec deux services. Vous avez ensuite généré une représentation graphique élémentaire de ce fichier au format DOT, qui illustre visuellement les services et leurs relations.

En complétant cette visualisation de base, vous avez exploré comment inclure des détails supplémentaires dans le graphe. Cela incluait l'incorporation des images de services, des réseaux et des ports dans la sortie visuelle, fournissant ainsi une vue plus complète de la configuration du fichier compose. Enfin, vous avez appris à personnaliser l'indentation du graphe de sortie pour une meilleure lisibilité.