Aller au contenu

Docker

Configuration de la rétention des traces

La configuration des traces sous PostgreSQL est importante. Celle de Docker également.

Par défaut, le log-driver de Docker est configuré sur json. Les traces des conteneurs vont être stockées au format json sur le serveur hôte.

L’emplacement des fichiers liés au conteneur sera du type :

/var/lib/docker/containers/e5be4783b05a7b6ae6923f89c7e705a88dc64f4b714bd041e0040fa93e3f60a8

ou e5be47... est l’identifiant unique du conteneur.

La commande qui permet de vérifier la configuration est :

$ docker info --format '{{.LoggingDriver}}'
json-file

Prenons l’exemple d’un conteneur PostgreSQL. Ses traces sont envoyées sur la sortie standard et se trouvent être gérées par Docker lui même. Par défaut, aucune limite sur la taille du fichier de traces n’est définie, pouvant alors engendrer une saturation de disque si les traces d’un conteneur sont importantes et jamais purgées.

Pour configurer le log-driver json, il faut modifier le fichier /etc/docker/daemon.json.

À titre d’exemple, voici une configuration pour une rotation sur trois fichiers de 50 Mo.

$ cat /etc/docker/daemon.json
{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "50m",
        "max-file": "3"
    }
}

Un redémarrage de Docker est nécessaire pour la prise en compte de la nouvelle configuration pour tout nouveau conteneur.

Cette configuration peut aussi se faire au lancement du conteneur en passant les options --log-driver json-file --log-opt max-size=50m --log-opt max-file=3 à la commande docker run.

Les traces d’un conteneur Docker peuvent être affichées avec la commande docker logs -f id_conteneur ou en regardant directement dans le fichier de traces du conteneur :

tail -f /var/lib/docker/containers/e5be4783b05a7b6ae6923f89c7e705a88dc64f4b714bd041e0040fa93e3f60a8/e5be4783b05a7b6ae6923f89c7e705a88dc64f4b714bd041e0040fa93e3f60a8-json.log