Comment visualiser les journaux d'un conteneur Docker détaché

DockerDockerBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Docker a révolutionné la manière dont nous développons et déployons des applications, mais la gestion des journaux (logs) des conteneurs détachés peut être un défi. Ce tutoriel vous guidera tout au long du processus de visualisation des journaux des conteneurs Docker détachés, vous permettant de mieux comprendre et de résoudre les problèmes de vos applications conteneurisées.

Comprendre les conteneurs Docker

Docker est une plateforme open-source populaire qui permet aux développeurs de construire, déployer et exécuter des applications dans un environnement conteneurisé. Les conteneurs sont des paquets logiciels légers, autonomes et exécutables qui incluent tout ce dont a besoin une application pour fonctionner, y compris le code, l'environnement d'exécution (runtime), les outils système et les bibliothèques.

Qu'est-ce qu'un conteneur Docker?

Un conteneur Docker est une unité standardisée de logiciel qui regroupe le code et toutes ses dépendances, de sorte que l'application puisse s'exécuter rapidement et de manière fiable d'un environnement informatique à un autre. Les conteneurs sont créés à partir d'images Docker, qui sont les modèles pour le conteneur. Les images Docker sont construites à l'aide d'un Dockerfile, un document texte qui contient toutes les commandes qu'un utilisateur pourrait appeler sur la ligne de commande pour assembler une image.

graph TD A[Docker Image] --> B[Docker Container] B --> C[Application] B --> D[Runtime] B --> E[System Tools] B --> F[Libraries]

Avantages des conteneurs Docker

  • Cohérence : Les conteneurs garantissent que l'application fonctionnera de la même manière, quel que soit l'environnement.
  • Portabilité : Les conteneurs peuvent être exécutés sur n'importe quelle machine sur laquelle Docker est installé, ce qui facilite le déplacement d'une application d'un environnement à un autre.
  • Évolutivité : Les conteneurs peuvent être facilement mis à l'échelle pour répondre aux demandes changeantes.
  • Efficacité : Les conteneurs sont légers et utilisent moins de ressources que les machines virtuelles traditionnelles.

Architecture Docker

Docker utilise une architecture client-serveur, où le client Docker communique avec le démon Docker, qui est responsable de la construction, de l'exécution et de la distribution des conteneurs Docker.

Composant Description
Client Docker L'interface utilisateur du système Docker. Il permet aux utilisateurs d'interagir avec le démon Docker.
Démon Docker Le processus en arrière-plan qui gère les objets Docker, tels que les images, les conteneurs, les réseaux et les volumes.
Registre Docker Un système de stockage et de distribution pour les images Docker. Le registre par défaut est Docker Hub, un registre public fourni par Docker.
graph LR A[Docker Client] --> B[Docker Daemon] B --> C[Docker Registry] B --> D[Docker Images] B --> E[Docker Containers]

Visualisation des journaux (logs) des conteneurs détachés

Lorsque vous exécutez un conteneur Docker en mode détaché (en utilisant le flag -d), le conteneur s'exécute en arrière-plan et vous n'avez pas accès direct à sa sortie. Cependant, vous pouvez toujours visualiser les journaux d'un conteneur détaché en utilisant l'interface en ligne de commande (CLI) Docker.

Visualisation des journaux d'un conteneur détaché

Pour visualiser les journaux d'un conteneur détaché, vous pouvez utiliser la commande docker logs. La syntaxe de base est la suivante :

docker logs [nom_du_conteneur ou id_du_conteneur]

Par exemple, supposons que vous ayez un conteneur détaché nommé my-app :

docker run -d --name my-app nginx

Vous pouvez visualiser les journaux de ce conteneur en utilisant la commande suivante :

docker logs my-app

Cela affichera les journaux du conteneur my-app dans votre terminal.

Visualisation des journaux en temps réel

Si vous souhaitez visualiser les journaux d'un conteneur détaché en temps réel, vous pouvez utiliser le flag -f (suivre) avec la commande docker logs :

docker logs -f my-app

Cela maintiendra la sortie des journaux ouverte dans votre terminal et affichera en continu les nouvelles entrées de journal au fur et à mesure qu'elles sont générées par le conteneur.

Filtrage des journaux

Vous pouvez également filtrer les journaux par date ou par niveau de journal spécifique. Par exemple, pour afficher les 10 dernières entrées de journal :

docker logs --tail 10 my-app

Ou pour afficher les journaux des 5 dernières minutes :

docker logs --since 5m my-app

Vous pouvez également filtrer les journaux par niveau de journal en utilisant le flag --until :

docker logs --until 5m my-app

Cela affichera les journaux des 5 dernières minutes.

Pilotes de journalisation (Logging drivers)

Docker prend en charge différents pilotes de journalisation, qui déterminent la manière dont les journaux des conteneurs sont stockés et gérés. Le pilote de journalisation par défaut est json-file, mais vous pouvez configurer un pilote de journalisation différent pour votre démon Docker ou pour des conteneurs individuels. Cela peut être utile pour intégrer avec des systèmes externes de gestion des journaux.

Techniques pratiques de journalisation

En plus de la commande de base docker logs, il existe plusieurs techniques pratiques que vous pouvez utiliser pour gérer et analyser les journaux de vos conteneurs Docker.

Journalisation dans un fichier

Au lieu de vous fier au pilote de journalisation par défaut json-file, vous pouvez configurer vos conteneurs Docker pour qu'ils enregistrent les journaux dans un fichier sur le système hôte. Cela peut être utile pour le stockage à long terme et l'analyse des journaux.

Pour enregistrer les journaux dans un fichier, vous pouvez utiliser les flags --log-driver et --log-opt lors du démarrage d'un conteneur :

docker run -d --name my-app --log-driver=local --log-opt=max-size=10m --log-opt=max-file=5 nginx

Dans cet exemple, les journaux seront écrits dans un fichier sur le système hôte, avec une taille maximale de fichier de 10 Mo et un maximum de 5 fichiers de journal.

Journalisation sur un système distant

Vous pouvez également configurer vos conteneurs Docker pour qu'ils envoient les journaux à un système de journalisation distant, tel qu'Elasticsearch, Splunk ou Syslog. Cela peut être utile pour la gestion et l'analyse centralisées des journaux.

Pour enregistrer les journaux sur un système distant, vous pouvez utiliser les flags --log-driver et --log-opt lors du démarrage d'un conteneur :

docker run -d --name my-app --log-driver=syslog --log-opt=syslog-address=tcp://192.168.1.100:514 nginx

Dans cet exemple, les journaux seront envoyés à un serveur Syslog à l'adresse IP 192.168.1.100 sur le port 514.

Utilitaires de journalisation

Il existe plusieurs utilitaires tiers qui peuvent vous aider à gérer et analyser plus efficacement les journaux Docker. Voici quelques options populaires :

  • Logspout : Un conteneur léger qui collecte et transfère les journaux Docker vers un service de journalisation centralisé.
  • Fluentd : Un collecteur de données open-source qui peut être utilisé pour agréger et traiter les journaux Docker.
  • Graylog : Une plateforme puissante de gestion et d'analyse des journaux qui peut ingérer et traiter les journaux Docker.

Ces outils peuvent offrir des fonctionnalités supplémentaires, telles que le filtrage des journaux, les alertes et la visualisation, pour vous aider à mieux comprendre et gérer les journaux de vos conteneurs Docker.

Résumé

Dans ce guide complet, vous apprendrez à visualiser les journaux (logs) des conteneurs Docker détachés, à explorer des techniques pratiques de journalisation et à acquérir les compétences nécessaires pour gérer et surveiller efficacement vos applications basées sur Docker. À la fin de ce tutoriel, vous aurez une bonne compréhension de la journalisation Docker et serez en mesure de gérer avec confiance diverses situations de journalisation.