⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

Voir les journaux de conteneur

Table des matières

La commande docker logs affiche les informations journalisées par un conteneur en cours d'exécution. La commande docker service logs affiche les informations journalisées par tous les conteneurs participant à un service. Les informations journalisées et le format du journal dépendent presque entièrement de la commande de point d'entrée du conteneur.

Par défaut, docker logs ou docker service logs affiche la sortie de la commande exactement comme elle apparaîtrait si vous exécutiez la commande de manière interactive dans un terminal. Les commandes Unix et Linux ouvrent généralement trois flux d'E/S quand elles s'exécutent, appelés STDIN, STDOUT et STDERR. STDIN est le flux d'entrée de la commande, qui peut inclure une entrée du clavier ou une entrée d'une autre commande. STDOUT est généralement la sortie normale d'une commande, et STDERR est généralement utilisé pour afficher les messages d'erreur. Par défaut, docker logs affiche le STDOUT et le STDERR de la commande. Pour en savoir plus sur les E/S et Linux, voir l'article du Projet de Documentation Linux sur la redirection d'E/S.

Dans certains cas, docker logs peut ne pas afficher d'informations utiles à moins que vous ne preniez des mesures supplémentaires.

  • Si vous utilisez un pilote de journalisation qui envoie les journaux vers un fichier, un hôte externe, une base de données ou un autre backend de journalisation, et que vous avez désactivé la "double journalisation", docker logs peut ne pas afficher d'informations utiles.
  • Si votre image exécute un processus non interactif tel qu'un serveur web ou une base de données, cette application peut envoyer sa sortie vers des fichiers journaux au lieu de STDOUT et STDERR.

Dans le premier cas, vos journaux sont traités d'autres manières et vous pouvez choisir de ne pas utiliser docker logs. Dans le second cas, l'image officielle nginx montre une solution de contournement, et l'image officielle Apache httpd en montre une autre.

L'image officielle nginx crée un lien symbolique de /var/log/nginx/access.log vers /dev/stdout, et crée un autre lien symbolique de /var/log/nginx/error.log vers /dev/stderr, écrasant les fichiers journaux et causant l'envoi des journaux vers le périphérique spécial approprié à la place. Voir le Dockerfile.

Le pilote officiel httpd modifie la configuration de l'application httpd pour écrire sa sortie normale directement vers /proc/self/fd/1 (qui est STDOUT) et ses erreurs vers /proc/self/fd/2 (qui est STDERR). Voir le Dockerfile.

Prochaines étapes