DevOpsFacile
AccueilParcours de formationCertificationsModulesCheat SheetÀ Propos
DevOpsFacile

Une plateforme d'apprentissage complète pour maîtriser les pratiques DevOps modernes, du débutant à l'expert.

contact@devopsfacile.fr

Formation

  • Parcours de formation
  • Modules

Informations

  • À Propos
  • Conditions d'utilisation
  • Confidentialité
  • Mentions légales

© 2026 DevOps Facile. Tous droits réservés.

Fait avec pour la communauté DevOps

ModulesDocker expliqué simplement : lancer ses premiers conteneurs05 - Inspecter et déboguer les conteneurs

Détails

  • 25 minutes
  • Débutant

Objectifs

  • Consulter les logs d'un conteneur en temps réel et de manière filtrée
  • Inspecter la configuration complète d'un conteneur
  • Surveiller les ressources consommées par les conteneurs
  • Exécuter des commandes dans un conteneur en cours d'exécution
Module Docker expliqué simplement : lancer ses premiers conteneurs

Exercice 05 : Inspecter et déboguer les conteneurs

🎯 Objectifs

À la fin de cet exercice, vous serez capable de :

  • ✅ Afficher les logs d'un conteneur avec docker logs, --follow et --tail
  • ✅ Inspecter la configuration complète d'un conteneur avec docker inspect
  • ✅ Surveiller la consommation CPU/mémoire avec docker stats --no-stream
  • ✅ Exécuter une commande dans un conteneur actif avec docker exec
  • ✅ Lister les processus d'un conteneur avec docker top

Durée estimée : 25 minutes

Difficulté : ⭐⭐⭐☆☆ (Débutant+)

Prérequis :

  • Exercices 01 à 04 complétés
  • curl disponible dans le terminal

📖 Contexte

En production, un conteneur qui ne répond plus est le problème le plus courant. Savoir le diagnostiquer rapidement est une compétence clé. Docker fournit plusieurs outils de débogage intégrés : les logs du processus principal, l'inspection de la configuration réseau, la surveillance des ressources en temps réel, et la possibilité d'entrer dans un conteneur pour l'inspecter de l'intérieur.


📋 Énoncé

Déployez un conteneur Nginx, générez du trafic, puis utilisez tous les outils de débogage Docker pour analyser son état, ses logs, et ses ressources.


🧭 Déroulement de l'exercice

Tâche 1 : Lancer un conteneur et générer des logs

Lancez un conteneur Nginx nommé debug-web en mode détaché sur le port 9090. Générez quelques requêtes HTTP avec curl pour alimenter les logs.

Indice : Faites 3 à 5 requêtes avec curl http://localhost:9090. Chaque requête génère une ligne de log dans le conteneur Nginx.

Vérification : docker logs debug-web doit afficher les lignes de log correspondant à vos requêtes curl.


Tâche 2 : Consulter les logs avec filtres

Consultez les logs du conteneur debug-web avec deux variantes :

  1. Afficher uniquement les 3 dernières lignes
  2. Suivre les logs en temps réel pendant 10 secondes (puis arrêter avec Ctrl+C)

Indice : --tail N limite l'affichage aux N dernières lignes. --follow (ou -f) suit le flux de logs en temps réel, comme tail -f sur un fichier.

Vérification : docker logs --tail 3 debug-web retourne exactement 3 lignes (les plus récentes).


Tâche 3 : Inspecter la configuration du conteneur

Inspectez le conteneur debug-web et extrayez les informations suivantes :

  1. Son adresse IP sur le réseau bridge Docker
  2. Le chemin du fichier de log (champ LogPath)
  3. Son statut de santé (champ State.Status)

Indice : docker inspect debug-web retourne un JSON complet. Utilisez --format '{{.NetworkSettings.IPAddress}}' pour extraire un champ précis, ou grep pour rechercher dans la sortie complète.

Vérification : docker inspect debug-web --format '{{.State.Status}}' doit retourner running.


Tâche 4 : Surveiller les ressources

Affichez un instantané de la consommation CPU et mémoire de tous les conteneurs actifs. Comparez ensuite avec le mode temps réel.

Indice : docker stats affiche les métriques en temps réel (rafraîchissement continu). --no-stream affiche un instantané unique et revient au prompt. --format permet de personnaliser les colonnes affichées.

Vérification : docker stats --no-stream doit afficher une ligne pour debug-web avec des valeurs de CPU% et MEM USAGE.


Tâche 5 : Exécuter des commandes dans le conteneur

Depuis l'hôte, exécutez les commandes suivantes à l'intérieur du conteneur debug-web :

  1. Affichez la version de Nginx installée dans le conteneur
  2. Listez les fichiers du répertoire /etc/nginx/conf.d/
  3. Listez les processus en cours dans le conteneur avec docker top

Indice : docker exec <conteneur> <commande> exécute une commande dans un conteneur actif sans ouvrir de shell interactif. docker top <conteneur> liste les processus sans entrer dans le conteneur.

Vérification : docker exec debug-web nginx -v affiche la version de Nginx. docker top debug-web liste au moins un processus nginx.


🗂️ Mini-Projet : Diagnostic complet d'un conteneur

bash
# 1. Lancer le conteneur
docker run -d --name debug-web -p 9090:80 nginx:1.25-alpine

# 2. Générer des logs
curl http://localhost:9090
curl http://localhost:9090/inexistant

# 3. Consulter les logs
docker logs debug-web
docker logs --tail 3 debug-web
docker logs --follow debug-web  # Ctrl+C pour quitter

# 4. Inspecter
docker inspect debug-web --format '{{.NetworkSettings.IPAddress}}'
docker inspect debug-web --format '{{.State.Status}}'
docker inspect debug-web --format '{{.LogPath}}'

# 5. Surveiller les ressources
docker stats --no-stream

# 6. Exécuter dans le conteneur
docker exec debug-web nginx -v
docker exec debug-web ls /etc/nginx/conf.d/
docker top debug-web

Checkpoints de validation :

  • docker logs debug-web affiche les accès HTTP générés par curl
  • docker logs --tail 3 debug-web retourne exactement 3 lignes
  • docker inspect debug-web --format '{{.State.Status}}' retourne running
  • docker stats --no-stream affiche les métriques CPU et mémoire de debug-web
  • docker exec debug-web nginx -v affiche la version de Nginx
  • docker top debug-web liste les processus nginx actifs

Retour au module

Sur cette page

  • 🎯 Objectifs
  • 📖 Contexte
  • 📋 Énoncé
  • 🧭 Déroulement de l'exercice
  • Tâche 1 : Lancer un conteneur et générer des logs
  • Tâche 2 : Consulter les logs avec filtres
  • Tâche 3 : Inspecter la configuration du conteneur
  • Tâche 4 : Surveiller les ressources
  • Tâche 5 : Exécuter des commandes dans le conteneur
  • 🗂️ Mini-Projet : Diagnostic complet d'un conteneur