- Lors de l’exploitation d’un service sur un serveur Linux où une application est déployée avec Docker, il arrive qu’un message signale un manque d’espace disque
- Même si le volume de données et de logs réellement générés et stockés par l’application n’est pas important, l’ensemble du stockage du système peut se retrouver plein
- Lorsqu’on utilise Docker, l’une des causes du manque d’espace de stockage est le « journal des conteneurs Docker »
- Pilotes de journalisation Docker et emplacement des logs
- Pilote de journalisation : Docker inclut un mécanisme de journalisation qui aide à obtenir des informations depuis les conteneurs et services en cours d’exécution ; c’est ce qu’on appelle le pilote de journalisation
- Commande
docker logs : affiche les informations enregistrées par un conteneur en cours d’exécution
- Commande
docker service logs : affiche les informations enregistrées par tous les conteneurs participant à un service
- Docker utilise le pilote de journalisation
json-file, qui capture la sortie standard (stdout) et la sortie d’erreur standard (stderr) de tous les logs de conteneurs et les écrit dans un fichier au format JSON
- Quand on lance un conteneur Docker avec la commande
docker run ou docker-compose up, le fichier /var/lib/docker/containers/[Container-ID]/[Container-ID]-json.log est créé et les logs y sont enregistrés
- Le pilote de journalisation
json-file n’effectue pas de rotation des logs
- Si un conteneur génère beaucoup de sortie, les fichiers de logs stockés par ce pilote peuvent occuper un espace disque important, ce qui peut finir par épuiser l’espace disponible
- Réduire la taille des logs de conteneurs Docker
- Si l’on exécute la commande
docker rm ou docker-compose down, le conteneur Docker est supprimé, ainsi que le répertoire correspondant à [Container-ID] sous /var/lib/docker/containers
- Le fichier
[Container-ID]-json.log, qui pouvait occuper beaucoup d’espace disque, est alors supprimé lui aussi, ce qui libère de l’espace disque sur l’ensemble du système
- En exécutant la commande
truncate -s 0 <json-log-file>, on peut ramener la taille du fichier de log à 0
- Configurer la rotation des logs
- On peut activer la rotation des logs en définissant la taille maximale du fichier (
max-size) et le nombre maximal de fichiers (max-file)
- Lorsque la taille du fichier atteint la limite configurée, il est remplacé par un nouveau fichier, et d’anciens fichiers de logs sont créés sous les noms
...-json.log.1, ...-json.log.2, jusqu’au nombre maximal défini
- Une fois cette limite dépassée, le fichier le plus ancien est supprimé, ce qui évite que la taille des fichiers de logs des conteneurs Docker n’augmente indéfiniment
Aucun commentaire pour le moment.