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
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-
Afficher les journaux du conteneur : accédez aux journaux de votre conteneur en cours d’exécution pour surveiller sa sortie.
docker logs linuxconfigCette commande affiche tous les journaux générés par le conteneur depuis son démarrage.
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
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é.
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.
Récupération de journaux de base : Obtenez tous les journaux d’un conteneur.
docker logs linuxconfigSurveillance des journaux en temps réel : Suivez les journaux au fur et à mesure qu’ils sont générés.
docker logs --follow linuxconfig-
Limitation de la sortie des journaux : Récupérez uniquement les journaux les plus récents.
docker logs --tail=50 linuxconfig Affichage des journaux avec horodatage : Affichez les journaux avec des informations sur l’heure.
docker logs --timestamps linuxconfigChaque ligne de journal est préfixée de son horodatage pour un meilleur suivi des événements.
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" linuxconfigFiltrage du temps relatif : Affichez les journaux des dernières minutes ou heures.
docker logs --since=30m linuxconfigEnregistrement des journaux dans un fichier : Redirigez les journaux vers un fichier pour une analyse plus approfondie.
docker logs linuxconfig > container_logs.txt 2>&1Enregistre tous les journaux des conteneurs dans un fichier texte qui peut être partagé ou analysé avec d’autres outils.
Filtrage des journaux avec grep : Recherchez des modèles spécifiques dans les journaux.
docker logs linuxconfig 2>&1 | grep ERRORSurveillance de plusieurs conteneurs : utilisez Docker Compose pour voir les journaux d’une pile de services.
docker-compose logs -fDé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 nginxAfficher les journaux à partir d’un conteneur arrêté
docker logs my_old_containerUtiliser le pilote de journalisation JSON (lors du démarrage du conteneur)
docker run -d --name jsonlogger --log-driver=json-file httpdUtiliser un pilote de journalisation personnalisé (p. ex., syslog)
docker run -d --name syslogger --log-driver=syslog httpdInspecter les paramètres du pilote de journal
docker inspect --format='{{.HostConfig.LogConfig.Type}}' linuxconfigRenvoie le pilote de journal actuellement utilisé par le conteneur.
Analyse des événements liés aux conteneurs : Suivez les événements du cycle de vie des conteneurs.
docker events --filter container=linuxconfig
Cela montre tous les journaux générés depuis le début de l’exécution du conteneur.
Affiche les journaux et continue à diffuser une nouvelle sortie jusqu’à ce que vous appuyiez sur Ctrl+C.
Affiche seulement les 50 dernières lignes de journaux, ce qui est utile pour les conteneurs avec des billes volumineuses.
Affiche uniquement les journaux générés au cours de la période spécifiée.
Affiche les journaux des 30 dernières minutes. Vous pouvez utiliser s (secondes), m (minutes), h (heures) ou d (jours).
Affiche uniquement les lignes de journal contenant le mot « ERREUR », ce qui facilite l’identification des problèmes.
Lorsque vous travaillez avec plusieurs conteneurs définis dans un fichier Docker Compose, cette commande affiche les journaux de tous les services.
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.
Docker conserve les journaux même si le conteneur s’est arrêté, à moins qu’il ne soit retiré.
Utilise le pilote de journal 'json-file' par défaut; Les billes peuvent être inspectées avec les journaux Docker.
Utile pour envoyer des journaux à des systèmes centralisés (Syslog, Fluentd, etc.).
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)
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.
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.
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.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 ».




