docker logs
docker-compose logs
Jérémie Lesage – 06/10/2020
Suite à notre article sur l’utilisation des conteneurs avec Systemd. Je voudrais préciser un point sur la gestion des logs dans les conteneurs.
La bonne pratique officielle est de ne pas générer les logs dans un fichier dans le conteneur (/var/log/conteneur.log
). La règle est donc d’envoyer tous les logs dans la sortie standard et de laisser Docker s’occuper des logs.
C’est très pratique car on peut ensuite consulter les logs avec les outils docker :
docker logs
docker-compose logs
Cependant, attention à bien configurer votre deamon docker car par défaut il n’effectue pas de rotation de logs ce qui peut provoquer la saturation de l’espace disque.
# /etc/docker/daemon.json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file":"10",
"compress": "true"
}
}
Dans le cas d’un démarrage des conteneurs avec systemd
, il peut être préférable d’envoyer les logs vers journald
en activant le bon log-driver.
# /etc/docker/daemon.json
{
"log-driver": "journald"
}
Vous pouvez ensuite consulter les logs docker dans journald
directement. (Attention, le changement du log-driver
ne s’applique pas aux conteneurs déjà créés)
systemctl restart docker
docker run -d --rm --name hello_world \
alpine sh -c 'while true; do sleep 1.5; echo "hello world"; done'
journalctl CONTAINER_NAME=hello_world
dockerd[944]: hello world
dockerd[944]: hello world
dockerd[944]: hello world
docker stop hello_world
Pour se simplifier la vie, vous pouvez également utiliser les tags pour filtrer vos logs. Ce qui nécessite de définir le paramètre --log-opt
.
Par exemple
for i in $(seq 0 2); do
docker run -d --rm \
--log-opt labels=app --label app=hello \
alpine sh -c "while true; do sleep 1.5; echo \"hello world $i\"; done"
done
journalctl app=hello
dockerd[17136]: hello world 0
dockerd[17136]: hello world 1
dockerd[17136]: hello world 2
dockerd[17136]: hello world 0
dockerd[17136]: hello world 1
dockerd[17136]: hello world 2
docker container ls -f "label=app=hello" -q | xargs docker stop
Maintenant vous avez une solution simple mais efficace pour gérer vos logs docker. Pour vous aider dans la conteneurisation de vos applications historique, contactez nous.
2013-2020 Jeci | Mixed with v4.3.2 | Baked with JBake v2.6.4 | Photo by Glen Noble on Unsplash | Mentions légales