Avec la popularité et l'application de la technologie des conteneurs, Docker est devenu un élément indispensable dans de nombreuses entreprises. Lors de l'utilisation de Docker pour le développement et le déploiement, l'analyse des journaux de conteneurs et le dépannage des exceptions sont très importants. Cet article explique comment utiliser Docker pour l'analyse des journaux de conteneurs et le dépannage des exceptions, ainsi que des exemples de code détaillés.
1. Introduction aux journaux Docker
Le journal Docker fait référence à la sortie du conteneur, y compris la sortie standard et la sortie d'erreur du conteneur. À l'intérieur du conteneur, la sortie peut être écrite sur la console via stdout et stderr. Docker capture ces sorties et les enregistre dans un fichier sur la machine hôte.
Dans Docker, chaque conteneur a son propre journal Vous pouvez utiliser la commande Docker pour afficher le journal du conteneur :
docker logs [CONTAINER ID]
où CONTAINER ID fait référence à l'ID du conteneur.
2. Utiliser Docker pour l'analyse des journaux du conteneur
L'utilisation de Docker pour l'analyse des journaux du conteneur peut nous aider à comprendre l'état de fonctionnement du conteneur, à trouver les problèmes existants et à les réparer. Voici les étapes spécifiques à suivre pour utiliser Docker pour analyser les journaux du conteneur :
Tout d'abord, nous devons vérifier les journaux du conteneur pour déterminer s'il y a des anomalies dans le conteneur. Utilisez la commande Docker pour afficher les journaux du conteneur :
docker logs [CONTAINER ID]
Si vous souhaitez afficher les 10 derniers journaux du conteneur, vous pouvez utiliser la commande suivante :
docker logs --tail 10 [CONTAINER ID]
Lors de l'affichage des journaux du conteneur, nous pouvons les filtrer en fonction de mots-clés. Filtrer les journaux pour obtenir une image plus précise du fonctionnement de vos conteneurs. Utilisez la commande suivante pour filtrer les journaux en fonction de mots-clés :
docker logs [CONTAINER ID] | grep [KEYWORD]
Par exemple, recherchez les journaux contenant "error":
docker logs [CONTAINER ID] | grep error
Docker enregistrera les journaux du conteneur dans un fichier sur l'hôte. le fichier. Nous pouvons exporter les journaux du conteneur dans un fichier pour une analyse ultérieure. Utilisez la commande suivante pour afficher le journal du conteneur dans un fichier :
docker logs [CONTAINER ID] > [LOG FILE]
Par exemple, affichez le journal du conteneur dans le fichier "container.log":
docker logs [CONTAINER ID] > container.log
Si vous le souhaitez. pour en faire plus Pour une analyse approfondie des journaux de conteneurs, vous pouvez utiliser des outils tiers. Par exemple, utilisez ELK (Elasticsearch + Logstash + Kibana) pour l'analyse des journaux. Ce qui suit est une brève introduction à la façon d'utiliser ELK pour l'analyse des journaux de conteneur.
Nous pouvons utiliser Docker pour installer ELK. Les étapes spécifiques sont les suivantes :
docker pull sebp/elk docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it --name elk sebp/elk
Dans la commande ci-dessus, l'image sebp/elk est extraite et un conteneur nommé "elk" est démarré. Nous pouvons accéder au panneau Kibana via l'adresse http://localhost:5601/.
Dans Logstash, vous devez définir l'entrée, le filtre et la sortie. Ce qui suit est un simple fichier de configuration Logstash pour saisir les journaux de conteneur dans Elasticsearch :
input { file { type => "docker" path => "/var/lib/docker/containers/*/*.log" exclude => "*.gz" } } filter { if [type] == "docker" { grok { match => { "message" => "[%{TIMESTAMP_ISO8601:timestamp}] %{LOGLEVEL:loglevel} %{GREEDYDATA:message}" } overwrite => [ "message" ] } date { match => [ "timestamp", "ISO8601" ] timezone => "UTC" } } } output { stdout { codec => rubydebug } elasticsearch { hosts => ["localhost:9200"] index => "docker-%{+YYYY.MM.dd}" document_type => "docker" } }
Dans le fichier de configuration ci-dessus, une entrée nommée "docker" est définie et le chemin d'entrée est /var/lib/docker/containers /Download all . fichiers journaux. Dans le filtre, utilisez le modèle grok pour faire correspondre les journaux et convertir l'horodatage au format d'heure ISO8601. Dans Output, exportez les journaux dans Elasticsearch.
Après avoir terminé la configuration ci-dessus, nous pouvons afficher les journaux du conteneur et les analyser. Dans le panneau Kibana, sélectionnez la page « Découvrir » pour voir toutes les informations du journal.
3. Utilisez Docker pour dépanner les exceptions de conteneur
Le dépannage des exceptions de conteneur dans Docker est également très important. Des anomalies dans le conteneur peuvent empêcher l'application de fonctionner normalement, voire provoquer le crash de l'ensemble du système. Ce qui suit décrit comment utiliser Docker pour résoudre les anomalies de conteneur.
Nous pouvons utiliser la commande suivante pour vérifier l'état du conteneur :
docker ps -a
Cette commande listera tous les conteneurs et leur statut.
Après avoir vérifié l'état du conteneur, nous pouvons entrer dans le conteneur pour le débogage. Utilisez la commande suivante pour saisir le conteneur :
docker exec -it [CONTAINER ID] /bin/bash
Parmi elles, CONTAINER ID fait référence à l'ID du conteneur.
Après être entré dans le conteneur, nous pouvons afficher les journaux du conteneur et effectuer une analyse de débogage en fonction des informations du journal. La commande spécifique est la suivante :
docker logs [CONTAINER ID]
Lors du dépannage des anomalies du conteneur, nous pouvons utiliser certains outils pour vous aider. Par exemple, installez l'outil Debug dans le conteneur pour faciliter notre débogage. Voici un exemple :
docker run -d --name nginx-debug --entrypoint /usr/bin/sleep nginx 9d docker pause nginx-debug docker network connect [NETWORK] nginx-debug docker attach --sig-proxy=false nginx-debug
Dans la commande ci-dessus, un conteneur nommé "nginx-debug" est d'abord créé et certaines configurations sont effectuées. Nous pouvons utiliser ce conteneur pour le débogage.
4. Résumé
Lorsque nous utilisons Docker pour analyser les journaux de conteneurs et résoudre les exceptions, nous pouvons utiliser les commandes Docker pour afficher et analyser, ou nous pouvons utiliser des outils tiers pour nous aider à analyser les journaux de conteneurs et à résoudre les exceptions plus en profondeur. J'espère que le contenu ci-dessus vous sera utile lors de l'utilisation de Docker pour le développement et le déploiement. Dans le même temps, cet article fournit également des exemples de code détaillés pour permettre aux lecteurs de comprendre et d'apprendre plus facilement les technologies associées.
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!