Recherche de site Web

Docker Run avec des journaux – 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 résoudre efficacement. Dans cet article, nous allons explorer différentes méthodes de capture et d’analyse des 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 allez apprendre :

  • Comment utiliser la commande docker logs pour capturer la sortie
  • Bonnes pratiques pour la journalisation dans les conteneurs Docker
  • Comment analyser les journaux à des fins de débogage

Configuration logicielle requise et conventions de ligne de commande Linux

Capture et analyse des journaux à partir de Docker

COMPRENDRE LES JOURNAUX DOCKER
Docker capture la sortie (stdout et stderr) de vos conteneurs, qui sont accessibles à l’aide de commandes pour aider à déboguer les problèmes.

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 sur l’hôte est mappé au port 80 dans le 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 en permanence les journaux 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 si vous utilisiez tail -f sur un fichier journal.

Exemples de commandes Docker Logs

Docker offre de puissantes fonctionnalité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 capture, de filtrage et d’analyse des journaux 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 base des journaux : 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 la 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. N’affiche que les 50 dernières lignes de logs, ce qui est utile pour les conteneurs contenant des logs volumineux.

  7. Affichage des journaux avec des horodatages : affichez les journaux avec des informations temporelles.

    docker logs --timestamps linuxconfig

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

  8. Capture des journaux limités dans le temps : obtenez les 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 temporel 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 de conteneur 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. N’affiche que 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 afficher les journaux d’une pile de services.

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

  17. Débogage avancé avec des 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 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 supprimé.

  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 par défaut 'json-file' ; Les journaux peuvent être inspectés à l’aide des journaux Docker.

  23. Utiliser un pilote de journalisation personnalisé (par exemple, syslog)

    docker run -d --name syslogger --log-driver=syslog httpd
  24. Utile pour l’envoi de logs à 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 de conteneur : suivez les événements du cycle de vie du conteneur.

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

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

Conclusion

La capture et l’analyse cohérentes des journaux des conteneurs Docker sont essentielles pour un débogage et une résolution des problèmes efficaces. 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 des outils ou des frameworks supplémentaires 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, en les rendant disponibles après le redémarrage du conteneur.

  2. Quels sont les formats de journaux pris en charge par Docker ?

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

  3. Comment puis-je afficher les journaux de tous les conteneurs en même temps ?

    Utilisez $docker logs $ (docker ps -q) pour récupérer les journaux de tous les conteneurs en cours d’exécution si vous souhaitez 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: