GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Journaux Docker :ce qu'ils sont et comment les utiliser (avec exemples)

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.


Docker
  1. Comment utiliser les commandes 'cat' et 'tac' avec des exemples sous Linux

  2. Qu'est-ce que Docker ? Apprenez à utiliser les conteneurs - Expliqué avec des exemples

  3. Comment utiliser les canaux et les canaux nommés sous Linux (avec exemples)

  4. Que sont les volumes Docker et comment les utilisez-vous ?

  5. Comment et pourquoi utiliser un hôte Docker distant

Comment installer et utiliser Docker Compose sur Ubuntu 20.04

Comment installer et utiliser Docker Compose sur Ubuntu 22.04

Comment installer et utiliser Docker sur Ubuntu 22.04

Qu'est-ce que Docker Compose et comment l'utiliser ?

Comment installer et utiliser Docker sur Ubuntu 20.04

Qu'est-ce que PPA dans Ubuntu Linux et comment les utiliser