Où conservez-vous les fichiers journaux Docker ?

Le débogage de la plupart des programmes Linux implique généralement la vérification des fichiers journaux, ce qui peut être un processus complexe. Cependant, lors de l'exécution dans un environnement conteneurisé sur Docker, vous devrez utiliser des outils plus spécifiques pour déboguer les applications en production.

Où sont stockés les enregistrements ?

La réponse simple est que Docker stocke les journaux de conteneur dans son emplacement de stockage principal, |_+_|. Chaque conteneur a un enregistrement spécifique pour son propre ID (l'ID complet, pas le court qui est généralement affiché) et vous pouvez y accéder comme ceci :

|__+_|

À savoir Où est-il ils sont archivés, mais parce qu'ils sont au format JSON, ils ne sont pas faciles à lire et devoir utiliser l'ID complet du conteneur est ennuyeux. Docker fournit une commande intégrée pour les afficher :

|__+_|

ici le |__+_| flag gardera le drapeau ouvert et 'suivra' toute nouvelle entrée dans le fichier. Vous pouvez aussi |_+_| le fichier, ou utilisez |__+_| pour voir l'heure du journal ou utilisez |__+_| ET |__+_| pour filtrer par temps.

Si vous utilisez Docker Compose, vous pouvez utiliser la commande log pour afficher facilement tous les journaux :

|__+_|

Une chose que vous remarquerez cependant est qu'il s'agit de STDOUT et STDERR, ce qui est utile pour beaucoup de choses, mais il ne montre que la sortie de la console du point d'entrée spécifié par 'CMD' dans le Dockerfile. De nombreuses applications ont leurs propres systèmes d'enregistrement dédiés, accédant souvent à des fichiers comme |_+_|. Il est toujours possible d'accéder à des journaux comme celui-ci depuis le côté hôte via Docker.

Afficher les journaux d'application à l'intérieur des conteneurs

Selon le contenant, cela peut ne pas être nécessaire. Par exemple, le conteneur NGINX par défaut est configuré pour envoyer ses journaux Docker à STDOUT pour une vérification facile des journaux. Il le fait avec un lien symbolique de |__+_| dans le fichier de registre et vous pouvez définir quelque chose de similaire pour vos conteneurs.

|__+_|

Cependant, si vous souhaitez vérifier des fichiers spécifiques dans un conteneur, vous le pouvez. Docker fournit le |__+_| commande pour vous permettre d'exécuter n'importe quelle commande dans n'importe quel processus Docker en cours d'exécution. Avec cela, vous pouvez ajouter un fichier journal dans un conteneur Docker :

|__+_|

Comme cela vous permet d'exécuter n'importe quelle commande, vous pouvez utiliser |__+_| ou toute autre stratégie de débogage que vous voulez, tant que vous la préférez avec |_+_|. Vous pouvez également exécuter |__+_| si vous voulez sauter et naviguer.

Une solution plus permanente qui fonctionne mieux avec les services hôtes consiste à utiliser un montage de volume Docker. Vous pouvez associer un répertoire comme |__+_| à un volume visible depuis l'hôte. Tout d'abord, créez un nouveau volume :

|__+_|

Et exécutez le conteneur avec le |__+_| :

|__+_|

Si vous utilisez Docker Compose, le processus peut être automatisé :

|__+_|

De cette manière, les fichiers journaux seront directement ingérés par tout service d'agrégation de journaux sur la machine hôte.

Afficher les journaux du démon Docker

Si vous souhaitez plutôt voir les journaux spécifiques au service Docker général sur votre serveur et non à une application conteneurisée spécifique, nous vous recommandons de consulter le |__+_| enregistrements :

|__+_|

C'est là qu'il est stocké sur la plupart des systèmes, mais à un endroit différent sur certains :

  • AmazonLinux : |__+_|
  • CentOS / RHEL : |__+_|
  • MacOS : |_+_|
  • Windows : |__+_|
Qu'est-ce que tu penses?