Dans cet article, nous allons vous montrer tout ce que vous devez savoir sur les journaux Docker et comment les utiliser.
La vie serait beaucoup plus simple si les applications s'exécutant dans des conteneurs Docker se comportaient toujours correctement. Lorsque les choses commencent inévitablement à mal tourner, vous avez besoin d'informations de diagnostic pour comprendre comment et pourquoi.
Si vous êtes un administrateur système et responsable de la création et de la gestion d'applications conteneurisées, la journalisation Docker est l'une des plus importantes pour vous. La gestion des journaux est l'un des meilleurs moyens de révéler les erreurs, d'aider au débogage et d'optimiser les performances de votre application.
Plongeons-nous donc dans la journalisation Docker et ses fichiers journaux.
Que sont les journaux Docker
Tout d'abord, vous devez comprendre comment les journaux sont générés.
En un mot, les journaux Docker sont la sortie de la console des conteneurs en cours d'exécution . Ils fournissent la stdout
(sortie standard) et stderr
(erreur standard) flux de processus qui s'exécutent à l'intérieur d'un conteneur. Dans un conteneur, Docker surveille stdout
et stderr
et collecte la sortie des flux, et c'est la source des journaux du conteneur.
Se connecter à Docker n'est pas la même chose que se connecter ailleurs. Dans Docker, tout est écrit dans stdout
et stderr
streams est implicitement envoyé à un pilote de journalisation, qui fournit un mécanisme pour accéder à ces flux et envoyer les journaux dans un fichier. Le pilote par défaut pour les journaux Docker est "json-file", qui écrit les journaux dans des fichiers locaux sur l'hôte Docker au format JSON.
Tous les journaux stockés dans le conteneur seront supprimés lors de sa résiliation ou de son arrêt.
L'exemple ci-dessous montre les journaux JSON créés à l'aide du pilote de fichier json :
{"log":"Adding password for user webdav\n","stream":"stderr","time":"2021-08-01T15:58:05.329724917Z"}
Vous pouvez utiliser la commande suivante pour trouver le pilote de journalisation par défaut actuel :
docker info --format '{{.LoggingDriver}}'
json-file
Où sont stockés les journaux Docker
Si vous utilisez le format de journal par défaut qui est JSON, les journaux d'un conteneur se trouvent dans /var/lib/docker/containers/
répertoire sur un hôte Linux Docker.
/var/lib/docker/containers/<container-id>/<container-id>-json.log
Dans le chemin indiqué ci-dessus, le <container-id>
est l'identifiant du conteneur en cours d'exécution. Si vous ne savez pas quel identifiant est lié à quel conteneur, vous pouvez exécuter le docker container ls
commande pour lister tous les conteneurs en cours d'exécution.
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
99e9b6f4b1a3 jbbodart/alpine-nginx-webdav "/bin/sh -c '/entryp…" 51 minutes ago Up 51 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp webdav
Comment afficher les journaux Docker
Supposons que vous exécutiez un conteneur et que vous souhaitiez accéder aux journaux Docker de ce conteneur. Comment pouvez-vous accomplir cette tâche ?
Tout d'abord, vous pouvez utiliser la commande suivante pour vérifier les conteneurs en cours d'exécution :
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
99e9b6f4b1a3 jbbodart/alpine-nginx-webdav "/bin/sh -c '/entryp…" 58 minutes ago Up 58 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp webdav
Cette commande imprime une liste des conteneurs en cours d'exécution. Dans notre cas, le paramètre le plus important est le CONTAINER ID , que nous utiliserons à l'étape suivante.
Maintenant que vous êtes sûr que votre conteneur est en cours d'exécution, utilisons l'CONTAINER ID pour voir tous ses journaux.
Afficher les journaux Docker
Pour interroger les journaux du conteneur, utilisez les docker logs
commande. Il s'agit d'une commande qui affiche toutes les informations enregistrées par un conteneur en cours d'exécution. Avec docker logs CONTAINER_ID
, vous pouvez voir tous les journaux diffusés par un conteneur spécifique identifié par un identifiant unique.
docker logs 99e9b6f4b1a3
172.17.0.1 - webdav [01/Aug/2021:18:38:39 +0000] "GET /favicon.ico HTTP/1.1" 404 555 "http://localhost/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36"
2021/08/01 18:39:09 [info] 10#10: *3 client 172.17.0.1 closed keepalive connection
172.17.0.1 - webdav [01/Aug/2021:18:39:09 +0000] "PUT /docker-logs.png HTTP/1.1" 201 25 "-" "curl/7.78.0"
Comment suivre le journal du conteneur
Bien que cela vous montre les journaux, cela ne vous permettra pas d'afficher la sortie continue des journaux. Utilisation de -f
suivra les journaux du conteneur Docker.
docker logs -f 99e9b6f4b1a3
Afficher uniquement les dernières lignes
Dans certains cas, vous souhaitez vérifier rapidement uniquement les 10 dernières lignes de journal pour votre conteneur. Vous pouvez utiliser le --tail
option pour spécifier le nombre de journaux que vous souhaitez voir.
docker logs --tail 10 99e9b6f4b1a3
Afficher les journaux depuis une date spécifique
Lorsque vous inspectez vos journaux Docker, vous souhaitez souvent limiter la sortie à un nombre donné de lignes, pour ne pas être inondé d'informations.
Si vous souhaitez voir les journaux d'un moment précis jusqu'à maintenant, le --since
l'option aide dans cette tâche.
Par exemple, pour voir les journaux du conteneur depuis 20 minutes, vous écrivez :
docker logs --since 20m 99e9b6f4b1a3
Vous pouvez également écrire un format de date tant qu'il est fourni au format ISO :
docker logs --since 2021-07-19T10:00:00 99e9b6f4b1a3
Afficher les journaux jusqu'à une date spécifique
Pour afficher les journaux jusqu'à une date spécifique, utilisez le --until
option avec une date ou une durée.
docker logs --until 20m 99e9b6f4b1a3
Ou vous pouvez également fournir un format de date comme vous l'avez fait auparavant pour le --since
option.
docker logs --until
2021-07-19T10:00:00 99e9b6f4b1a3
Conclusion
Les journaux Docker vous aident à déboguer et à résoudre les problèmes plus rapidement. Dans ce didacticiel, vous avez appris ce qu'ils sont et comment ils peuvent être inspectés et utiliser des options afin de les surveiller.
Si vous avez des questions ou des commentaires, n'hésitez pas à laisser un commentaire.