Voir les journaux de conteneur
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
etSTDERR
.
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
- Configurer les pilotes de journalisation.
- Écrire un Dockerfile.