J'utilise plusieurs conteneurs en utilisant docker-compose
. Je peux voir les journaux d'application avec la commande docker-compose logs
. Cependant, j'aimerais accéder à un fichier journal brut pour l'envoyer quelque part, par exemple? Où est-il situé? Je suppose qu'il s'agit d'un journal distinct pour chaque conteneur (à l'intérieur du conteneur?), Mais où puis-je le trouver?
Les journaux d'un conteneur peuvent être trouvés dans:
/var/lib/docker/containers/<container id>/<container id>-json.log
(si vous utilisez le format de journal par défaut qui est json)
Vous pouvez docker inspect
chaque conteneur pour voir où se trouvent ses journaux:
docker inspect --format='{{.LogPath}}' $INSTANCE_ID
Et, si vous essayez de savoir où les journaux doivent gérer leur taille collective ou de modifier les paramètres de la journalisation elle-même, vous trouverez ce qui suit.
Fixation de la quantité d'espace réservé aux journaux
Ceci est extrait de Demande de possibilité d'effacer l'historique du journal (numéro 1083) ):
Docker 1.8 et docker-compose 1.4 existent déjà une méthode pour limiter la taille du journal en utilisant docker compose log driver et log-opt max-size:
mycontainer:
...
log_driver: "json-file"
log_opt:
# limit logs to 2MB (20 rotations of 100K each)
max-size: "100k"
max-file: "20"
Dans docker composer des fichiers de la version '2', la syntaxe a un peu changé:
version: '2'
...
mycontainer:
...
logging:
#limit logs to 200MB (4rotations of 50M each)
driver: "json-file"
options:
max-size: "50m"
max-file: "4"
(notez que dans les deux syntaxes, les nombres sont exprimés sous forme de chaînes, entre guillemets)
Problème possible avec docker-compose logs
qui ne termine pas
logs
ne se ferme pas si le conteneur est déjà arrêtéPour voir combien d'espace le journal de chaque conteneur occupe, utilisez ceci:
docker ps -qa | xargs docker inspect --format='{{.LogPath}}' | xargs ls -hl
(vous pourriez avoir besoin d'une Sudo
avant ls
).
Pour visualiser directement le fichier journal en moins, j'utilise:
docker inspect $1 | grep 'LogPath' | sed -n "s/^.*\(\/var.*\)\",$/\1/p" | xargs Sudo less
exécuté en tant que ./viewLogs.sh CONTAINERNAME
Sous Windows, l'emplacement par défaut est: C:\ProgramData\Docker\containers\<container-id>-json.log
.
À partir du 22/08/2018, les journaux peuvent être trouvés dans:
/data/docker/containers/<container id>/<container id>-json.log