Comment utiliser la commande docker compose top pour afficher les processus en cours d'exécution

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 labo, vous apprendrez à utiliser la commande docker compose top pour afficher les processus en cours d'exécution dans vos conteneurs Docker. Nous commencerons par préparer un simple fichier docker-compose.yml pour définir un service, puis nous démarrerons le service à l'aide de Docker Compose. Enfin, vous utiliserez la commande docker compose top, à la fois de manière générale et avec un nom de service spécifique, pour inspecter les processus en cours d'exécution à l'intérieur des conteneurs.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/start("Start Container") docker/ContainerOperationsGroup -.-> docker/top("Display Running Processes in Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/ps -.-> lab-555094{{"Comment utiliser la commande docker compose top pour afficher les processus en cours d'exécution"}} docker/start -.-> lab-555094{{"Comment utiliser la commande docker compose top pour afficher les processus en cours d'exécution"}} docker/top -.-> lab-555094{{"Comment utiliser la commande docker compose top pour afficher les processus en cours d'exécution"}} docker/pull -.-> lab-555094{{"Comment utiliser la commande docker compose top pour afficher les processus en cours d'exécution"}} end

Préparer un fichier docker-compose.yml simple

Dans cette étape, nous allons préparer un fichier docker-compose.yml simple. Avant de commencer, comprenons ce qu'est Docker Compose. Docker Compose est un outil permettant de définir et d'exécuter des applications Docker multi-conteneurs. Avec Compose, vous utilisez un fichier YAML pour configurer les services de votre application. Ensuite, avec une seule commande, vous créez et démarrez tous les services à partir de votre configuration.

Comme Docker Compose n'est pas préinstallé dans l'environnement LabEx, nous devons d'abord l'installer. Nous allons télécharger le binaire Docker Compose et le rendre exécutable.

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

Maintenant que Docker Compose est installé, créons un fichier docker-compose.yml simple dans le répertoire ~/project. Ce fichier définira un service unique utilisant l'image ubuntu et exécutant simplement la commande sleep infinity pour maintenir le conteneur en fonctionnement.

Nous utiliserons l'éditeur nano pour créer et modifier le fichier.

nano ~/project/docker-compose.yml

Dans l'éditeur nano, collez le contenu suivant :

version: "3.8"
services:
  ubuntu_service:
    image: ubuntu
    command: sleep infinity

Analysons ce fichier docker-compose.yml :

  • version: '3.8' spécifie la version du format de fichier Compose.
  • services: définit les services de votre application.
  • ubuntu_service: est le nom de notre service. Vous pouvez choisir n'importe quel nom.
  • image: ubuntu spécifie l'image Docker à utiliser pour ce service. Ici, nous utilisons l'image officielle ubuntu. Comme l'image pourrait ne pas être présente localement, Docker Compose la téléchargera automatiquement si nécessaire.
  • command: sleep infinity spécifie la commande à exécuter au démarrage du conteneur. sleep infinity est une commande simple qui maintient le conteneur en fonctionnement indéfiniment.

Après avoir collé le contenu, enregistrez le fichier en appuyant sur Ctrl + X, puis Y pour confirmer, et Entrée pour enregistrer sous le nom par défaut docker-compose.yml.

Pour s'assurer que l'image ubuntu est disponible, téléchargeons-la manuellement avec la commande docker pull. C'est une bonne pratique pour s'assurer que l'image est prête avant de démarrer le service avec Docker Compose.

docker pull ubuntu

Vous devriez voir une sortie indiquant que l'image ubuntu est en cours de téléchargement.

Démarrer les services définis dans le fichier docker-compose.yml

Dans cette étape, nous allons démarrer les services définis dans le fichier docker-compose.yml que nous avons créé précédemment. Nous utiliserons la commande docker compose up pour y parvenir.

Accédez au répertoire où vous avez enregistré le fichier docker-compose.yml, c'est-à-dire ~/project.

cd ~/project

Maintenant, exécutez la commande docker compose up. Le drapeau -d exécute les conteneurs en mode détaché, ce qui signifie qu'ils fonctionneront en arrière-plan sans bloquer votre terminal.

docker compose up -d

Vous devriez voir une sortie indiquant que le service est en cours de création et de démarrage. Docker Compose créera un réseau, un volume (si défini, bien que ce ne soit pas le cas dans notre exemple simple) et le conteneur pour le service ubuntu_service.

Pour vérifier que le conteneur est en cours d'exécution, vous pouvez utiliser la commande docker ps.

docker ps

Vous devriez voir un conteneur listé avec l'image ubuntu et la commande sleep infinity. Le statut devrait être Up. Le nom du conteneur sera préfixé par le nom du répertoire (project dans ce cas) et le nom du service (ubuntu_service).

Utiliser docker compose top pour afficher les processus en cours d'exécution

Dans cette étape, nous allons utiliser la commande docker compose top pour afficher les processus en cours d'exécution dans les conteneurs gérés par Docker Compose. Cette commande est similaire à la commande top sous Linux, mais elle affiche les processus s'exécutant à l'intérieur des conteneurs.

Assurez-vous d'être toujours dans le répertoire ~/project où se trouve votre fichier docker-compose.yml.

cd ~/project

Maintenant, exécutez la commande docker compose top.

docker compose top

Vous devriez voir une sortie similaire à ceci :

ID                  NAME                PID                 COMMAND             ELAPSED
<container_id>      project-ubuntu_service-1   <pid>               sleep infinity      <time>

Cette sortie montre les processus en cours d'exécution dans chaque conteneur géré par votre fichier docker-compose.yml. Dans notre cas, nous n'avons qu'un seul service (ubuntu_service), et le seul processus en cours est sleep infinity, qui correspond à la commande que nous avons spécifiée dans le fichier docker-compose.yml.

La sortie comprend :

  • ID : L'identifiant du conteneur
  • NAME : Le nom du conteneur, généralement au format <nom_répertoire>-<nom_service>-<numéro_instance>
  • PID : L'identifiant du processus de la commande s'exécutant dans le conteneur
  • COMMAND : La commande exécutée dans le conteneur
  • ELAPSED : Le temps écoulé depuis le démarrage de la commande

Cette commande est utile pour inspecter ce qui s'exécute dans vos conteneurs et diagnostiquer d'éventuels problèmes.

Utiliser docker compose top avec un nom de service pour afficher des processus spécifiques

Dans cette étape, nous allons apprendre à utiliser la commande docker compose top pour afficher les processus d'un service spécifique défini dans votre fichier docker-compose.yml. Ceci est particulièrement utile lorsque vous avez plusieurs services en cours d'exécution et que vous souhaitez uniquement inspecter les processus de l'un d'entre eux.

Assurez-vous d'être toujours dans le répertoire ~/project.

cd ~/project

Pour afficher les processus d'un service spécifique, vous devez ajouter le nom du service à la commande docker compose top. Dans notre fichier docker-compose.yml, le nom du service est ubuntu_service.

docker compose top ubuntu_service

Vous devriez voir une sortie similaire à l'étape précédente, mais cette fois elle n'affichera que les processus du conteneur ubuntu_service :

ID                  NAME                PID                 COMMAND             ELAPSED
<container_id>      project-ubuntu_service-1   <pid>               sleep infinity      <time>

Si vous aviez d'autres services définis dans votre fichier docker-compose.yml et qu'ils étaient en cours d'exécution, l'exécution de docker compose top sans nom de service afficherait les processus de tous les services. En spécifiant ubuntu_service, nous filtrons la sortie pour n'afficher que les processus du conteneur correspondant à ce service spécifique.

Cette approche ciblée est utile pour déboguer et surveiller des composants individuels de votre application multi-conteneurs.

Résumé

Dans ce labo, nous avons appris à utiliser la commande docker compose top pour afficher les processus en cours d'exécution dans les conteneurs Docker gérés par Docker Compose. Nous avons commencé par préparer un simple fichier docker-compose.yml, ce qui a impliqué l'installation de Docker Compose et la définition d'un service utilisant l'image ubuntu avec une commande sleep infinity pour maintenir le conteneur en fonctionnement.

Après cette préparation, nous avons démarré les services définis dans le fichier docker-compose.yml. Enfin, nous avons exploré l'utilisation de la commande docker compose top, d'abord pour afficher tous les processus en cours d'exécution sur l'ensemble des services, puis spécifiquement pour un seul service en précisant son nom. Cette expérience pratique nous a montré comment inspecter les processus s'exécutant dans nos conteneurs gérés par Docker Compose.