Comment déboguer des conteneurs Docker sur Debian 13 | INTROSERV
EUR
european

EUR

usa

USD

French Fr
Ex. VAT Ex. VAT 0%

Comment déboguer des conteneurs Docker sur Debian 13

Introduction

Dans ce tutoriel, vous apprendrez à déboguer des conteneurs Docker en utilisant des techniques pratiques et adaptées aux débutants. Vous identifierez les problèmes en vérifiant le statut des conteneurs, en analysant les journaux, en inspectant la configuration et en accédant à l'environnement du conteneur. Cette approche vous aide à comprendre rapidement pourquoi un conteneur échoue et comment le réparer.

Objectif final : À la fin de ce tutoriel, vous serez capable d'identifier et de résoudre les problèmes courants des conteneurs Docker en utilisant les journaux, l'inspection et les outils d'analyse en temps réel.

Prérequis

  • Public cible : Administrateurs système débutants
  • Temps estimé : ~30 minutes
  • Système d'exploitation : Debian 13
  • Logiciel : Docker 24.0 ou version ultérieure
  • Permissions : Utilisateur avec privilèges sudo ou membre du groupe docker
  • Exigences matérielles : Au moins 2 Go de RAM et 10 Go d'espace disque libre
  • Exigences réseau : Accès Internet pour télécharger des images, aucun port spécifique requis pour ce tutoriel
  • Exigences : Utilisation basique de la ligne de commande et un service Docker en cours d'exécution
  • Compatibilité : Testé sur Debian 13 et fonctionne sur Debian 12 et Ubuntu 22.04

Étape 1 : Vérifier les informations système de Docker

Avant de déboguer un conteneur spécifique, vérifiez que Docker lui-même fonctionne correctement.
Exécutez la commande suivante :

docker system info

Vous verrez des informations détaillées sur l'environnement Docker, y compris :

  • Version du serveur
  • Pilote de stockage
  • Nombre de conteneurs et d'images
  • Disponibilité du CPU et de la mémoire
  • Répertoire racine de Docker

Cela vous aide à confirmer que :

  • Docker fonctionne correctement
  • Le système dispose de suffisamment de ressources
  • Il n'y a pas de problèmes de configuration globale

Info

Si Docker ne fonctionne pas, vous pouvez voir une erreur telle que "Impossible de se connecter au démon Docker".

Pour vérifier le statut du service Docker :

systemctl status docker

Vous verrez si le service Docker est actif. S'il ne fonctionne pas, démarrez-le :

sudo systemctl start docker

Vous devriez maintenant voir le service en état actif.

Tip

Vérifiez toujours la santé de Docker avant de déboguer les conteneurs. De nombreux problèmes de conteneurs sont causés par le service Docker ou des problèmes au niveau du système.

Étape 2 : Vérifier le statut du conteneur

Exécutez la commande suivante :

docker ps

Vous verrez une liste des conteneurs en cours d'exécution avec des détails tels que l'ID du conteneur, l'image et le statut. Si votre conteneur apparaît avec le statut "Up", il est actuellement en cours d'exécution.

Pour inclure les conteneurs arrêtés :

docker ps -a

Vous verrez maintenant tous les conteneurs. Si votre conteneur affiche "Exited", cela signifie qu'il s'est arrêté en raison d'une erreur ou a terminé son exécution.

Info

Un conteneur s'arrête lorsque son processus principal se termine. C'est un comportement normal mais cela indique souvent un problème s'il se termine de manière inattendue.

Étape 3 : Voir les journaux du conteneur

Les journaux montrent ce que l'application à l'intérieur du conteneur produit. C'est l'étape la plus importante pour le débogage. Vous pouvez obtenir <CONTAINER_ID> via la commande docker ps décrite à l'étape 2.

Exécutez :

docker logs <CONTAINER_ID>

Vous verrez la sortie de l'application, y compris les erreurs et les avertissements. Recherchez les messages indiquant des échecs tels que des fichiers manquants ou des erreurs de connexion.

Pour suivre les journaux en temps réel :

docker logs -f <CONTAINER_ID>

Vous verrez de nouvelles entrées de journal au fur et à mesure qu'elles apparaissent. Cela est utile lors du redémarrage d'un conteneur et de l'observation du comportement.

Pour voir uniquement les journaux récents :

docker logs --tail 50 <CONTAINER_ID>

Vous verrez les 50 dernières lignes de sortie. Cela vous aide à vous concentrer sur les événements les plus récents.

Tip

Commencez par les journaux récents, puis examinez les journaux complets si nécessaire.

Étape 4 : Inspecter l'état du conteneur

Docker stocke des informations détaillées sur chaque conteneur.

Exécutez :

docker inspect <CONTAINER_ID>

Vous verrez une sortie JSON structurée avec des détails de configuration et d'exécution.

Pour vérifier le statut du conteneur :

docker inspect -f '{{.State.Status}}' <CONTAINER_ID>

Vous verrez une valeur simple telle que "running" ou "exited", ce qui confirme l'état du conteneur.

Pour vérifier le code de sortie :

docker inspect -f '{{.State.ExitCode}}' <CONTAINER_ID>

Vous verrez un nombre. Une valeur de 0 signifie succès, tandis que toute valeur non nulle indique une erreur.

Pour vérifier la politique de redémarrage :

docker inspect -f '{{.HostConfig.RestartPolicy.Name}}' <CONTAINER_ID>

Vous verrez si le conteneur est configuré pour redémarrer automatiquement.

Info

Les codes de sortie vous aident à comprendre pourquoi un conteneur s'est arrêté. Lorsqu'un conteneur se termine, le processus principal à l'intérieur retourne un code numérique au système.

Codes de sortie courants que vous pouvez voir :

  • 0 – Le processus s'est terminé avec succès sans erreurs. Cela signifie généralement que le conteneur s'est arrêté normalement. Par exemple, un script a terminé sa tâche et s'est arrêté.
  • 1 – Une erreur générale s'est produite. C'est le code d'échec le plus courant et signifie généralement que quelque chose à l'intérieur de l'application a échoué, comme un fichier manquant, une configuration invalide ou une erreur d'exécution.
  • 125 – Docker n'a pas pu exécuter le conteneur. Cela indique généralement un problème avec la commande docker run elle-même, comme des options invalides ou des paramètres incorrects.
  • 126 – La commande à l'intérieur du conteneur ne peut pas être exécutée. Cela signifie souvent des problèmes de permission ou que le fichier n'est pas exécutable.
  • 127 – La commande n'a pas été trouvée. Cela signifie généralement que le binaire ou le script spécifié n'existe pas à l'intérieur du conteneur.
  • 137 – Le conteneur a été arrêté de force. Cela se produit souvent lorsque le système manque de mémoire et tue le processus du conteneur.
  • 139 – Le conteneur s'est écrasé avec une faute de segmentation. Cela indique une erreur d'application sérieuse, souvent liée à des problèmes d'accès à la mémoire.
  • 143 – Le conteneur a été arrêté gracieusement. Cela se produit généralement lorsque vous exécutez docker stop et que le conteneur s'arrête correctement.

Tip

Concentrez-vous d'abord sur les codes 1, 127 et 137, car ils sont les plus courants lors du dépannage. Combinez toujours le code de sortie avec les journaux Docker pour comprendre la cause exacte de l'échec.

Étape 5 : Accéder à l'environnement du conteneur

Parfois, les journaux ne suffisent pas. Vous pouvez entrer dans le conteneur pour l'inspecter directement.

Exécutez :

docker exec -it <CONTAINER_ID> /bin/bash

Vous entrez dans un shell interactif à l'intérieur du conteneur.

Si bash n'est pas disponible :

docker exec -it <CONTAINER_ID> /bin/sh

Vous pouvez maintenant explorer le conteneur.

Vérifiez les processus du conteneur en cours d'exécution depuis l'hôte :

docker top <CONTAINER_ID>

Vous verrez les processus actifs à l'intérieur du conteneur. Si le processus principal manque, le conteneur peut s'arrêter.

Tip

Vérifiez les fichiers de configuration et testez les commandes manuellement à l'intérieur du conteneur.

Étape 6 : Surveiller l'utilisation des ressources

Les conteneurs peuvent échouer en raison de ressources limitées.

Exécutez :

docker stats

Vous verrez l'utilisation en temps réel du CPU, de la mémoire et du réseau pour tous les conteneurs.

Pour surveiller un conteneur spécifique :

docker stats <CONTAINER_ID>

Vous verrez un tableau en direct qui se met à jour en continu avec l'utilisation des ressources pour tous les conteneurs en cours d'exécution. Chaque ligne représente un conteneur, et chaque colonne montre un type spécifique d'utilisation des ressources.
Les colonnes les plus importantes sont :

  • CPU % – Montre combien de CPU le conteneur utilise. Des valeurs élevées peuvent indiquer un traitement intensif ou un code inefficace.
  • MEM USAGE / LIMIT – Montre combien de mémoire le conteneur utilise par rapport à sa limite. Si l'utilisation est proche de la limite, le conteneur peut ralentir ou être arrêté.
  • MEM % – Pourcentage de mémoire utilisée par rapport à la limite.
  • NET I/O – Trafic réseau. Cela montre combien de données le conteneur a reçues et envoyées. Des valeurs élevées peuvent indiquer une activité réseau intense.
  • BLOCK I/O – Activité de lecture et d'écriture sur disque. Cette colonne montre combien de données le conteneur a lues et écrites sur le disque.
  • PIDs – Nombre de processus en cours d'exécution à l'intérieur du conteneur. Un nombre très élevé peut indiquer une fuite de processus ou une application incontrôlée.

Info

Si le BLOCK I/O augmente constamment, le conteneur utilise activement le stockage. C'est normal pour les bases de données, mais des pics inattendus peuvent indiquer une utilisation inefficace du disque ou un journal excessif. Lors du débogage, recherchez des pics inhabituels dans le CPU, la mémoire ou le BLOCK I/O. Combinez ces informations avec les journaux Docker pour comprendre ce que fait le conteneur à ce moment-là.

Étape 7 : Vérifier les événements Docker

Docker enregistre des événements qui décrivent ce qui se passe au niveau du système et des conteneurs. Ces événements vous aident à comprendre quand un conteneur démarre, s'arrête, plante ou redémarre.
Exécutez la commande suivante :

docker events

Vous verrez un flux en direct d'événements tels que le démarrage, l'arrêt et le redémarrage des conteneurs. La sortie se met à jour en continu en temps réel.

Info

Appuyez sur Ctrl + C pour arrêter le flux en direct.

Filtrer les événements pour un conteneur spécifique

Exécutez :

docker events --filter container=<CONTAINER_ID>

Vous verrez uniquement les événements liés au conteneur sélectionné. Cela vous aide à vous concentrer sur une seule charge de travail.

Afficher les événements d'une plage de temps spécifique

Pour voir les événements à partir d'un moment spécifique :

docker events --since 10m

Vous verrez les événements des 10 dernières minutes.

Pour définir à la fois l'heure de début et de fin :

docker events --since 2026-01-01T10:00:00 --until 2026-01-01T11:00:00

Vous verrez les événements qui se sont produits dans cette plage de temps.

Info

Vous pouvez utiliser un temps relatif comme 10m, 1h, ou des horodatages complets.

Formater la sortie des événements

Exécutez :

docker events --format '{{.Time}} {{.Type}} {{.Action}} {{.Actor.ID}}'

Vous verrez une sortie formatée avec les champs sélectionnés. Cela facilite la lecture ou l'intégration avec des scripts.

Tip

Utilisez le formatage pour mettre en évidence uniquement les informations dont vous avez besoin lors du débogage.

Filtrer des types d'événements spécifiques

Vous pouvez filtrer les événements pour vous concentrer sur des problèmes spécifiques.

Arrêts ou plantages de conteneurs

Exécutez :

docker events --filter event=die

Vous verrez les événements lorsque les conteneurs s'arrêtent. Cela aide à identifier les arrêts inattendus.

Événements de manque de mémoire

Exécutez :

docker events --filter event=oom

Vous verrez les événements lorsqu'un conteneur est tué en raison de limites de mémoire. C'est crucial pour diagnostiquer les problèmes de ressources.

Info

OOM signifie Out Of Memory. Le système arrête le conteneur lorsqu'il dépasse la mémoire disponible.

Redémarrages de conteneurs

Exécutez :

docker events --filter event=restart

Vous verrez quand les conteneurs redémarrent. Des événements de redémarrage fréquents peuvent indiquer une boucle de plantage.

Combiner les filtres et la plage de temps

Exécutez :

docker events --since 10m --filter event=die

Vous verrez les événements d'arrêt de conteneur des 10 dernières minutes. Cela aide à restreindre les échecs récents.

Tip

Combinez les filtres et les plages de temps pour identifier rapidement les modèles tels que les plantages répétés ou les problèmes de mémoire.

Étape 8 : Vérifier l'utilisation du disque et nettoyer les images inutilisées

Docker stocke les images, les conteneurs, les volumes et le cache sur le disque. Au fil du temps, les données inutilisées peuvent consommer un espace important et causer des problèmes.

Exécutez la commande suivante :

docker system df

Vous verrez un résumé de l'utilisation du disque, y compris :

  • Images
  • Conteneurs
  • Volumes locaux
  • Cache de construction

Chaque section montre :

  • Nombre total
  • Éléments actifs
  • Taille
  • Espace récupérable

Cela vous aide à comprendre combien d'espace disque Docker utilise et combien peut être nettoyé.

Info

La colonne "Reclaimable" montre combien d'espace peut être libéré en supprimant les ressources inutilisées.

Pour voir les images inutilisées, exécutez :

docker images -f dangling=true

Vous verrez les images qui ne sont pas étiquetées et non utilisées par un conteneur. Ce sont des candidats sûrs pour la suppression.

Pour supprimer les images inutilisées, exécutez :

docker image prune

Vous serez invité à confirmer. Après confirmation, les images inutilisées sont supprimées et l'espace disque est libéré.

Pour supprimer toutes les images inutilisées, pas seulement celles en attente :

docker image prune -a

Vous supprimez toutes les images qui ne sont utilisées par aucun conteneur.

Info

Important : Cette commande supprime les images qui peuvent être nécessaires plus tard. Assurez-vous qu'aucun conteneur requis ne dépend d'elles.

Tip

Un nettoyage régulier aide à prévenir les problèmes d'espace disque qui peuvent entraîner l'échec des conteneurs ou un comportement imprévisible.

Vérification et tests

  • Exécutez docker ps et confirmez que le statut du conteneur est correct.
  • Exécutez docker logs et vérifiez que les erreurs sont identifiées ou résolues.
  • Exécutez docker inspect et confirmez que le statut et le code de sortie correspondent aux attentes.
  • Utilisez docker exec pour confirmer que les processus s'exécutent à l'intérieur du conteneur.
  • Si le débogage est réussi, le conteneur devrait rester en état de fonctionnement sans erreurs critiques dans les journaux.

Annulation des modifications

Si vous avez apporté des modifications lors du débogage, vous pouvez restaurer un état propre.

Tip

Sauvegardez les données importantes avant de supprimer les conteneurs.

Arrêtez un conteneur :

docker stop <CONTAINER_ID>

Vous verrez la confirmation que le conteneur a été arrêté.

Supprimez un conteneur :

docker rm <CONTAINER_ID>

Vous verrez la confirmation que le conteneur a été supprimé.

Recréez le conteneur :

docker run <OPTIONS> <IMAGE_NAME>

Un nouveau conteneur est créé à partir de l'image.

Info

Important : Supprimer un conteneur supprime son état d'exécution. Les données sont perdues à moins qu'elles ne soient stockées dans des volumes.

Dépannage

Le conteneur se termine immédiatement

Vérifiez docker logs pour les messages d'erreur. Ceux-ci expliquent généralement le problème.

Impossible d'accéder au conteneur

Assurez-vous qu'il est en cours d'exécution en utilisant docker ps.

Aucun journal disponible

Assurez-vous que l'application écrit la sortie sur stdout ou stderr.

Le conteneur redémarre de manière répétée

Vérifiez la politique de redémarrage et les journaux pour identifier les boucles de plantage.

Utilisation élevée des ressources

Utilisez docker stats pour confirmer les pics de CPU ou de mémoire.

Conclusion

Vous avez appris à déboguer des conteneurs Docker en vérifiant leur statut, en analysant les journaux, en inspectant la configuration et en accédant à l'environnement du conteneur. Ces techniques vous permettent d'identifier et de résoudre rapidement les problèmes courants. Comme prochaine étape, explorez le débogage de Docker Compose et les systèmes de journalisation centralisée pour gérer plusieurs conteneurs.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA