Recherche sur le site Web

Docker Run With Logs – Capture et débogage de la sortie


Les journaux sont un aspect inestimable du dépannage et du débogage des conteneurs Docker. Lors de l’exécution d’applications dans Docker, la capture efficace des journaux permet aux développeurs de diagnostiquer les problèmes plus rapidement et de les corriger efficacement. Dans cet article, nous explorerons diverses méthodes pour capturer et analyser les journaux des conteneurs Docker afin d’obtenir des informations sur leur comportement et de résoudre les problèmes qui surviennent.

Dans ce tutoriel, vous apprendrez :

  • Comment utiliser la commande docker logs pour capturer la sortie
  • Pratiques exemplaires pour l’exploitation forestière dans les conteneurs Docker
  • Comment analyser les journaux à des fins de débogage

Exigences logicielles et conventions de la ligne de commande Linux

Saisie et analyse des journaux de Docker

COMPRENDRE LES JOURNAUX DOCKER
Docker capture la sortie (stdout et stderr) de vos conteneurs, à laquelle vous pouvez accéder à l’aide de commandes pour aider à déboguer tout problème.

Cette section vous fournira des instructions étape par étape sur la façon de capturer et d’analyser les journaux lors de l’exécution de conteneurs Docker. Une gestion efficace des journaux est essentielle pour identifier et résoudre rapidement les problèmes.

Instructions étape par étape

  1. Exécuter un conteneur Docker en mode détaché : Démarrez un conteneur en arrière-plan tout en exposant les ports nécessaires.

    docker run -d --name linuxconfig -p 8888:80 httpd
  2. Ici, httpd est l’image du serveur HTTP Apache, linuxconfig est le nom attribué au conteneur et le port 8888 de l’hôte est mappé au port 80 du conteneur. L’option -d exécute le conteneur en mode détaché.

  3. Afficher les journaux du conteneur : accédez aux journaux de votre conteneur en cours d’exécution pour surveiller sa sortie.

    docker logs linuxconfig

    Cette commande affiche tous les journaux générés par le conteneur depuis son démarrage.

  4. Suivez les journaux en temps réel : Surveillez les journaux en permanence au fur et à mesure qu’ils sont générés.

    docker logs -f linuxconfig
  5. L’option -f (ou --follow) maintient la commande en cours d’exécution et affiche les nouvelles entrées de journal au fur et à mesure qu’elles se produisent, de la même manière que l’utilisation de tail -f sur un fichier de journaux.

Exemples de commandes Docker Logs

Docker offre de puissantes capacités de journalisation qui aident les développeurs à résoudre les problèmes et à surveiller le comportement des conteneurs. Les exemples suivants illustrent diverses techniques de saisie, de filtrage et d’analyse des registres de conteneurs. Des commandes de base aux configurations avancées, ces exemples couvrent un large éventail de scénarios pour vous aider à déboguer efficacement vos applications conteneurisées.

  1. Récupération de journaux de base : Obtenez tous les journaux d’un conteneur.

    docker logs linuxconfig
  2. Cela montre tous les journaux générés depuis le début de l’exécution du conteneur.

  3. Surveillance des journaux en temps réel : Suivez les journaux au fur et à mesure qu’ils sont générés.

    docker logs --follow linuxconfig
  4. Affiche les journaux et continue à diffuser une nouvelle sortie jusqu’à ce que vous appuyiez sur Ctrl+C.

  5. Limitation de la sortie des journaux : Récupérez uniquement les journaux les plus récents.

    docker logs --tail=50 linuxconfig
  6. Affiche seulement les 50 dernières lignes de journaux, ce qui est utile pour les conteneurs avec des billes volumineuses.

  7. Affichage des journaux avec horodatage : Affichez les journaux avec des informations sur l’heure.

    docker logs --timestamps linuxconfig

    Chaque ligne de journal est préfixée de son horodatage pour un meilleur suivi des événements.

  8. Capture de journaux limités dans le temps : Obtenez des journaux dans un délai spécifique.

    docker logs --since="2023-03-15T10:00:00" --until="2023-03-15T11:00:00" linuxconfig
  9. Affiche uniquement les journaux générés au cours de la période spécifiée.

  10. Filtrage du temps relatif : Affichez les journaux des dernières minutes ou heures.

    docker logs --since=30m linuxconfig
  11. Affiche les journaux des 30 dernières minutes. Vous pouvez utiliser s (secondes), m (minutes), h (heures) ou d (jours).

  12. Enregistrement des journaux dans un fichier : Redirigez les journaux vers un fichier pour une analyse plus approfondie.

    docker logs linuxconfig > container_logs.txt 2>&1

    Enregistre tous les journaux des conteneurs dans un fichier texte qui peut être partagé ou analysé avec d’autres outils.

  13. Filtrage des journaux avec grep : Recherchez des modèles spécifiques dans les journaux.

    docker logs linuxconfig 2>&1 | grep ERROR
  14. Affiche uniquement les lignes de journal contenant le mot « ERREUR », ce qui facilite l’identification des problèmes.

  15. Surveillance de plusieurs conteneurs : utilisez Docker Compose pour voir les journaux d’une pile de services.

    docker-compose logs -f
  16. Lorsque vous travaillez avec plusieurs conteneurs définis dans un fichier Docker Compose, cette commande affiche les journaux de tous les services.

  17. Débogage avancé avec pilotes de journal : Configurez un conteneur pour utiliser un pilote de journalisation spécifique.

    docker run -d --name debug-container --log-driver=json-file --log-opt max-size=10m --log-opt max-file=3 nginx
  18. Utilise le pilote de fichier JSON avec des paramètres de rotation, limitant les fichiers journaux à 10 Mo et conservant un maximum de 3 fichiers.

  19. Afficher les journaux à partir d’un conteneur arrêté

    docker logs my_old_container
  20. Docker conserve les journaux même si le conteneur s’est arrêté, à moins qu’il ne soit retiré.

  21. Utiliser le pilote de journalisation JSON (lors du démarrage du conteneur)

    docker run -d --name jsonlogger --log-driver=json-file httpd
  22. Utilise le pilote de journal 'json-file' par défaut; Les billes peuvent être inspectées avec les journaux Docker.

  23. Utiliser un pilote de journalisation personnalisé (p. ex., syslog)

    docker run -d --name syslogger --log-driver=syslog httpd
  24. Utile pour envoyer des journaux à des systèmes centralisés (Syslog, Fluentd, etc.).

  25. Inspecter les paramètres du pilote de journal

    docker inspect --format='{{.HostConfig.LogConfig.Type}}' linuxconfig

    Renvoie le pilote de journal actuellement utilisé par le conteneur.

  26. Analyse des événements liés aux conteneurs : Suivez les événements du cycle de vie des conteneurs.

    docker events --filter container=linuxconfig
  27. Affiche les événements liés au conteneur, tels que les démarrages, les arrêts ou les changements d’état de santé.

Envisagez
d’utiliser une solution de journalisation centralisée ou un pilote de journalisation. Docker prend en charge plusieurs pilotes de journalisation, y compris json-file et fluentd, qui peuvent aider à agréger les journaux pour faciliter les requêtes.

En conclusion

La capture et l’analyse cohérentes des journaux des conteneurs Docker sont essentielles pour un débogage et une résolution efficaces des problèmes. En tirant parti des capacités de journalisation natives de Docker, vous pouvez obtenir des informations précieuses sur le comportement de vos applications et maintenir des opérations efficaces.
N’oubliez pas d’explorer d’autres outils ou cadres qui améliorent l’efficacité de la journalisation, tels que l’intégration de la pile Fluentd ou ELK.

Foire aux questions (FAQ)

  1. Puis-je conserver les journaux même si un conteneur redémarre?

    Oui, l’utilisation de pilotes de journalisation tels que json-file peut aider à conserver les journaux, les rendant disponibles après le redémarrage du conteneur.

  2. Quels formats de journal Docker prend-il en charge?

    Docker utilise principalement le format JSON pour les journaux, mais prend en charge divers pilotes de journalisation qui peuvent s’adapter à différents formats, tels que syslog ou journald.

  3. Comment puis-je voir les journaux de tous les conteneurs à la fois?

    Utilisez $docker logs $ (docker ps -q) pour récupérer les journaux de tous les conteneurs en cours d’exécution si vous voulez les analyser collectivement.

  4. Puis-je filtrer les journaux par mots-clés spécifiques?

    Oui, vous pouvez utiliser grep avec la commande logs pour filtrer les informations pertinentes. Par exemple, $docker logs my_container | grep « ERROR ».

Articles connexes: