Comment utiliser la commande docker container stats pour surveiller les ressources des conteneurs

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 à surveiller efficacement l'utilisation des ressources de vos conteneurs Docker en utilisant la commande docker stats. Vous explorerez comment afficher en temps réel l'utilisation des ressources pour tous les conteneurs en cours d'exécution, ainsi que pour des conteneurs spécifiques par nom ou ID.

De plus, vous découvrirez comment visualiser l'utilisation des ressources pour tous les conteneurs, y compris ceux arrêtés, et comment personnaliser le format de sortie de la commande docker stats à l'aide d'un modèle personnalisé. Enfin, vous apprendrez à obtenir un instantané unique des statistiques des conteneurs sans flux continu.


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/stop("Stop Container") docker/ContainerOperationsGroup -.-> docker/top("Display Running Processes in Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") subgraph Lab Skills docker/ps -.-> lab-555123{{"Comment utiliser la commande docker container stats pour surveiller les ressources des conteneurs"}} docker/stop -.-> lab-555123{{"Comment utiliser la commande docker container stats pour surveiller les ressources des conteneurs"}} docker/top -.-> lab-555123{{"Comment utiliser la commande docker container stats pour surveiller les ressources des conteneurs"}} docker/pull -.-> lab-555123{{"Comment utiliser la commande docker container stats pour surveiller les ressources des conteneurs"}} end

Afficher l'utilisation des ressources en temps réel pour tous les conteneurs en cours d'exécution

Dans cette étape, vous apprendrez à afficher l'utilisation des ressources en temps réel pour tous les conteneurs Docker en cours d'exécution à l'aide de la commande docker stats. Cette commande fournit un flux en temps réel des données d'utilisation des ressources des conteneurs, y compris le CPU, la mémoire, les E/S réseau et les E/S bloc.

Commençons par démarrer quelques conteneurs afin d'avoir des éléments à surveiller. Nous utiliserons l'image ubuntu et les exécuterons en mode détaché (-d) pour qu'ils s'exécutent en arrière-plan. Nous leur attribuerons également des noms pour faciliter leur identification.

docker pull ubuntu
docker run -d --name container1 ubuntu sleep infinity
docker run -d --name container2 ubuntu sleep infinity
docker run -d --name container3 ubuntu sleep infinity

Maintenant que nous avons des conteneurs en cours d'exécution, nous pouvons utiliser la commande docker stats pour voir leur utilisation des ressources.

docker stats

Vous verrez un tableau avec des informations sur chaque conteneur en cours d'exécution, y compris son ID, son nom, l'utilisation du CPU, l'utilisation de la mémoire, les E/S réseau, les E/S bloc et les PIDs. Cette sortie se met à jour en temps réel.

Pour arrêter la commande docker stats, appuyez sur Ctrl+C.

Afficher l'utilisation des ressources en temps réel pour des conteneurs spécifiques par nom ou ID

Dans l'étape précédente, vous avez appris à afficher l'utilisation des ressources pour tous les conteneurs en cours d'exécution. Dans cette étape, vous apprendrez à afficher l'utilisation des ressources pour des conteneurs spécifiques en fournissant leurs noms ou ID à la commande docker stats.

Pour afficher les statistiques d'un seul conteneur, il suffit de préciser son nom ou son ID après la commande docker stats. Par exemple, pour voir les statistiques de container1 :

docker stats container1

Vous verrez alors l'utilisation des ressources en temps réel uniquement pour container1. Appuyez sur Ctrl+C pour arrêter l'affichage.

Vous pouvez également spécifier plusieurs noms ou ID de conteneurs pour voir les statistiques de plusieurs conteneurs simultanément. Par exemple, pour voir les statistiques de container1 et container2 :

docker stats container1 container2

Cela affichera l'utilisation des ressources en temps réel pour container1 et container2. Appuyez sur Ctrl+C pour arrêter l'affichage.

L'utilisation des noms de conteneurs est généralement plus facile à mémoriser et à utiliser que les ID de conteneurs, particulièrement lorsque vous avez plusieurs conteneurs en cours d'exécution.

Afficher l'utilisation des ressources pour tous les conteneurs (en cours d'exécution et arrêtés)

Par défaut, docker stats n'affiche que les statistiques des conteneurs en cours d'exécution. Dans cette étape, vous apprendrez à afficher l'utilisation des ressources pour tous les conteneurs, y compris ceux qui sont arrêtés, en utilisant le drapeau -a ou --all.

Commençons par arrêter l'un des conteneurs démarrés lors des étapes précédentes.

docker stop container3

Maintenant, si vous exécutez docker stats sans aucun drapeau, vous ne verrez que container1 et container2 puisqu'ils sont toujours en cours d'exécution.

docker stats

Appuyez sur Ctrl+C pour arrêter l'affichage.

Pour voir les statistiques de tous les conteneurs, y compris le conteneur arrêté container3, utilisez le drapeau -a :

docker stats -a

Vous verrez maintenant container1, container2 et container3 listés. Pour les conteneurs arrêtés, la plupart des champs d'utilisation des ressources afficheront 0% ou 0B, car ils ne consomment plus activement de ressources.

Cette fonctionnalité est utile pour obtenir une vue d'ensemble complète de tous les conteneurs sur votre système et de leur dernière utilisation connue des ressources avant leur arrêt.

Formater la sortie des statistiques de conteneurs avec un modèle personnalisé

Dans cette étape, vous apprendrez à formater la sortie de la commande docker stats en utilisant un modèle Go personnalisé. Cela vous permet d'afficher uniquement les informations dont vous avez besoin dans un format facile à lire ou à analyser.

La commande docker stats supporte le drapeau --format, qui accepte une chaîne de modèle Go comme argument. Vous pouvez utiliser différents espaces réservés dans le modèle pour représenter diverses informations sur le conteneur. Voici quelques espaces réservés courants :

  • .ContainerID : L'ID du conteneur
  • .Name : Le nom du conteneur
  • .CPUPerc : Le pourcentage d'utilisation du CPU
  • .MemUsage : L'utilisation mémoire
  • .NetIO : Les entrées/sorties réseau
  • .BlockIO : Les entrées/sorties disque
  • .PIDs : Le nombre de PIDs

Essayons de formater la sortie pour n'afficher que le nom du conteneur, l'utilisation CPU et l'utilisation mémoire :

docker stats --format "{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"

Dans cette commande :

  • --format spécifie que nous voulons utiliser un format personnalisé
  • "{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}" est la chaîne de modèle Go
    • {{.Name}} affiche le nom du conteneur
    • \t insère une tabulation pour la séparation
    • {{.CPUPerc}} affiche le pourcentage d'utilisation CPU
    • {{.MemUsage}} affiche l'utilisation mémoire

Vous verrez un flux en direct du nom du conteneur, de l'utilisation CPU et de l'utilisation mémoire, séparés par des tabulations. Appuyez sur Ctrl+C pour arrêter l'affichage.

Vous pouvez expérimenter avec différents espaces réservés et formats pour obtenir la sortie souhaitée. Par exemple, pour inclure l'ID du conteneur et les entrées/sorties réseau :

docker stats --format "ID: {{.ContainerID}}\tName: {{.Name}}\tNetIO: {{.NetIO}}"

Cela fournit une vue plus personnalisée des statistiques des conteneurs.

Obtenir un instantané unique des statistiques des conteneurs sans flux continu

Par défaut, docker stats fournit un flux continu d'utilisation des ressources. Cependant, vous pourriez parfois avoir besoin d'un simple instantané des statistiques actuelles sans les mises à jour en temps réel. Dans cette étape, vous apprendrez comment y parvenir en utilisant le drapeau --no-stream.

Le drapeau --no-stream indique à docker stats de collecter les statistiques une seule fois puis de quitter, au lieu de mettre continuellement à jour l'affichage.

Obtenons un instantané unique des statistiques pour tous les conteneurs en cours d'exécution :

docker stats --no-stream

Vous verrez le tableau des statistiques des conteneurs s'afficher une fois, puis la commande se terminera. Ceci est utile pour des scripts ou lorsque vous avez simplement besoin d'un aperçu rapide de l'utilisation actuelle des ressources.

Vous pouvez combiner --no-stream avec d'autres drapeaux, comme -a pour voir un instantané de tous les conteneurs (en cours d'exécution et arrêtés) :

docker stats -a --no-stream

Cela affichera un instantané unique de tous les conteneurs.

Vous pouvez également le combiner avec la spécification de conteneurs particuliers :

docker stats container1 container2 --no-stream

Cela vous donnera un instantané unique des statistiques pour container1 et container2.

L'utilisation de --no-stream est efficace lorsque vous n'avez pas besoin des mises à jour en temps réel et souhaitez simplement capturer l'état actuel de l'utilisation des ressources.

Résumé

Dans ce lab, vous avez appris à utiliser efficacement la commande docker stats pour surveiller l'utilisation des ressources de vos conteneurs Docker. Vous avez commencé par afficher l'utilisation en temps réel des ressources pour tous les conteneurs en cours d'exécution, observant les flux de données pour le CPU, la mémoire, les E/S réseau et les E/S bloc.

Ensuite, vous avez affiné votre surveillance en vous concentrant sur des conteneurs spécifiques, en utilisant leurs noms ou ID pour visualiser leur consommation individuelle de ressources. Cela a permis une analyse ciblée des performances des conteneurs.