Maison >Opération et maintenance >Docker >Docker vérifie où se trouve le fichier journal

Docker vérifie où se trouve le fichier journal

PHPz
PHPzoriginal
2023-05-13 14:12:3711183parcourir

Docker est une plateforme de conteneurisation open source très populaire, qui fournit une solution plus efficace, fiable et sécurisée pour le déploiement et la gestion d'applications. Cependant, lors de l'utilisation de Docker pour le déploiement, l'exploitation et la maintenance, nous devons souvent interroger les fichiers journaux pendant le processus d'exécution du conteneur pour mieux comprendre l'état de fonctionnement du système, le dépannage, le débogage de l'exploitation et de la maintenance, etc. Alors, où sont stockés les fichiers journaux dans Docker ? Cet article vous donnera une introduction détaillée à la méthode Docker d'affichage des fichiers journaux et aux précautions associées.

1. L'emplacement de stockage par défaut des fichiers journaux de Docker

Dans Docker, chaque conteneur générera les fichiers journaux correspondants. Ces fichiers journaux sont stockés par défaut dans le système de fichiers du conteneur. Plus précisément, Docker redirige par défaut la sortie standard (stdout) et l'erreur standard (stderr) du conteneur vers les fichiers de sortie standard et d'erreur standard du conteneur. Ces fichiers journaux se trouvent généralement dans le répertoire suivant :

/var/lib/docker/containers/$CONTAINER_ID/$CONTAINER_ID-json.log

où $CONTAINER_ID représente l'identifiant unique du conteneur.

Pour le stockage des logs Docker, il y a les points importants suivants :

  1. Les fichiers journaux sont stockés par défaut dans le conteneur, pas sur l'hôte En effet, Docker utilise la virtualisation du conteneur par défaut pour exécuter les applications, et le conteneur. est un environnement isolé qui comprend son propre système de fichiers et son propre espace de processus.
  2. Les fichiers journaux sont généralement stockés au format JSON. Ces fichiers incluent l'horodatage de chaque ligne de journal, le niveau de journal, l'ID du conteneur, le contenu du journal et d'autres informations.
  3. Les fichiers journaux ne sont pas automatiquement effacés par défaut, donc si nous ne supprimons pas activement ces fichiers, ils continueront à occuper l'espace disque du conteneur, entraînant une diminution progressive de l'espace disque pendant l'exécution du conteneur.

2. Utilisez Docker CLI pour afficher les fichiers journaux du conteneur

Dans le processus d'utilisation de Docker pour la gestion des conteneurs, nous pouvons utiliser l'outil de ligne de commande Docker CLI pour afficher les fichiers journaux du conteneur. Ci-dessous, nous présenterons plusieurs commandes Docker CLI de base pour implémenter la fonction d'affichage des journaux de conteneur.

  1. docker logs [OPTIONS] CONTAINER

La fonction de cette commande est d'imprimer toutes les informations de journal du conteneur spécifié. Parmi elles, les options OPTIONS peuvent être :

-a, --all : afficher les informations de journal de tous les conteneurs

-t, --timestamps : afficher les horodatages

-f, --follow : par exemple, les journaux de sortie tailf , Autrement dit, actualisez continuellement le journal d'affichage

--tail= : affiche le nombre spécifié de lignes de journaux à partir de la fin du fichier journal, la valeur par défaut est tous les journaux ($ docker logs -tail all)

-- depuis= : affiche les journaux enregistrés après l'heure spécifiée, telle que "2019-01-01", ou horodatage

--until= : affiche les journaux enregistrés avant l'heure spécifiée

L'utilisation spécifique est la suivante :

$ docker logs CONTAINER_ID

Cette commande affichera le conteneur spécifié Toutes les informations du journal, où CONTAINER_ID est l'identifiant unique du conteneur. Si vous souhaitez afficher les N dernières lignes d'informations du journal du conteneur, vous pouvez utiliser la commande suivante :

$ docker logs --tail N CONTAINER_ID

Si nous devons surveiller la sortie du journal en temps réel d'un conteneur à à tout moment, nous pouvons ajouter l'option -f :

$ docker logs -f CONTAINER_ID

  1. docker inspect [OPTIONS] CONTAINER

Cette commande est utilisée pour obtenir des informations détaillées sur le conteneur spécifié, y compris le chemin du fichier journal du conteneur , l'état d'exécution, l'adresse IP, le mappage des ports et d'autres informations connexes. Grâce à cette commande, nous pouvons obtenir le chemin de stockage par défaut du fichier journal du conteneur, comme indiqué ci-dessous :

$ docker inspect --format='{{.LogPath}}' CONTAINER_ID

En plus d'afficher le chemin du fichier journal du conteneur , cette commande Vous pouvez également afficher d'autres informations connexes. L'utilisation spécifique est la suivante :

$ docker inspect CONTAINER_ID

3. Utilisez des outils tiers pour afficher les journaux Docker

En plus de l'outil Docker CLI, vous pouvez également utilisez des outils tiers pour afficher les journaux Docker plus facilement. Nous présentons ici deux outils populaires d'affichage des journaux Docker :

  1. Docker Compose

Docker Compose est un outil d'orchestration de conteneurs officiellement fourni par Docker. Il fournit un fichier configurable docker-compose.yml pour définir les applications multi-conteneurs. mode de fonctionnement. L'utilisation de Docker Compose pour le déploiement facilite le démarrage de plusieurs conteneurs en même temps et la collecte et la gestion des journaux en même temps.

Lors du déploiement d'une application à l'aide de Docker Compose, vous pouvez afficher les journaux du conteneur via la commande docker-compose logs. L'utilisation spécifique est la suivante :

$ docker-compose logs [SERVICES...]

où SERVICES est le nom du service spécifié Par défaut, les journaux de tous les services seront affichés.

  1. ELK Stack

ELK fait référence à la combinaison de trois logiciels open source Elasticsearch + Logstash + Kibana, qui peuvent collaborer pour réaliser la collecte, l'analyse et la visualisation de journaux. Les données de journal dans Docker peuvent être collectées via Logstash, puis les données de journal peuvent être transférées vers Elasticsearch pour indexation et récupération, et enfin les données peuvent être affichées visuellement via l'interface Kibana.

L'utilisation d'ELK Stack pour la collecte et la visualisation des journaux Docker nécessite les étapes suivantes :

(1) Installez Docker

(2) Installez Docker Compose

(3) Téléchargez le fichier image ELK Stack : docker pull sebp/elk

(4) Utilisez le fichier docker-compose.yml pour démarrer le service ELK Stack :

version : '3.7'
services:
elasticsearch:

image: sebp/elk
ports:
  - "9200:9200"
volumes:
  - ./elasticsearch.yml:/etc/elasticsearch/elasticsearch.yml

kibana:

image: sebp/elk
ports:
  - "5601:5601"
links:
  - elasticsearch

logstash:

image: sebp/elk
volumes:
  - ./logstash:/etc/logstash/conf.d
links:
  - elasticsearch

(5) Dans le Fichier de configuration Logstash Spécifiez le chemin du journal Docker :

input {
file {

path => ["/var/lib/docker/containers/*/*.log"]
type => "docker"
codec => "json"

}
}

filter {
if [type] == "docker" {

}
}

output {
elasticsearch {

hosts => "elasticsearch:9200"
manage_template => false
index => "docker-%{+YYYY.MM.dd}"

}
}

(6) Redémarrez le service Logstash, puis recherchez et affichez les fichiers journaux Docker via l'interface Kibana.

En résumé, cet article détaille la méthode d'affichage des fichiers journaux dans Docker, y compris les commandes Docker CLI, les outils tiers tels que Docker Compose et ELK Stack. Avec l'aide de ces outils, nous pouvons plus facilement surveiller et déboguer les informations de journal du conteneur Docker pour garantir le fonctionnement normal de l'application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn