Où se trouve un fichier journal avec les journaux d'un conteneur?


117

J'utilise plusieurs conteneurs docker-compose. Je peux voir les journaux d'application avec la commande docker-compose logs. Cependant, je voudrais accéder au fichier journal brut pour l'envoyer quelque part par exemple? Où est-il situé? Je suppose que c'est un journal séparé pour chaque conteneur (à l'intérieur du conteneur?) Mais où puis-je le trouver?

Réponses:


191

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)


3
Il y a beaucoup de dossiers comme 004279dd2985037950beeba7e6fe45c10354476d3b82afb68e72dd612b03a8ff. Comment savoir quel dossier rechercher pour un conteneur particulier?
Praveen Sripati

3
@PraveenSripati, l'ID du conteneur pour l'exécution des conteneurs est affiché dans la première colonne si vous le faitesdocker ps
CS

1
@PraveenSripati écris docker ps, vous obtiendrez tous vos conteneurs disponibles avec leurs identifiants. Copiez l'ID de votre conteneur souhaité, puis de /var/lib/docker/containers/run ls | grep <paste the copied docker ID>. Ensuite, vous verrez ce conteneur de docker
TheLebDev

cd /var/lib/docker/containers/ -bash: cd: / var / lib / docker / containers /: Autorisation refusée sudo cd /var/lib/docker/containers/ sudo: cd: commande non trouvée
canbax

2
@Chris que je devais faire docker ps --no-truncpour voir l'identité entière
Dan Z

97

Vous pouvez docker inspectchaque conteneur pour voir où se trouvent leurs journaux:

docker inspect --format='{{.LogPath}}' $INSTANCE_ID

Et, au cas où vous tenteriez de déterminer où les journaux devaient gérer leur taille collective, ou ajuster les paramètres de la journalisation elle-même, vous trouverez ce qui suit pertinent.

Correction de la quantité d'espace réservé aux logs

Ceci est tiré de la demande pour la possibilité d'effacer l'historique du journal (problème 1083) ):

Docker 1.8 et docker-compose 1.4 il existe déjà une méthode pour limiter la taille du journal à l'aide du pilote de journal docker compose et de la taille maximale de log-opt:

mycontainer:
  ...
  log_driver: "json-file"
  log_opt:
    # limit logs to 2MB (20 rotations of 100K each)
    max-size: "100k"
    max-file: "20"

Dans le docker compose les 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 la docker-compose logsnon-résiliation

  • problème 1866 : la commande logsne se termine pas si le conteneur est déjà arrêté

1
La version courte: docker inspect -f '{{.LogPath}}' $ INSTANCE_ID
Bienvenido David

12

Pour voir l'espace occupé par le journal de chaque conteneur, utilisez ceci:

docker ps -qa | xargs docker inspect --format='{{.LogPath}}' | xargs ls -hl

(vous pourriez avoir besoin d'un sudoavant ls).


Je reçois une autorisation refusée.
Shakedk

1
L'ajout de sudo à la fin a aidé: docker ps -qa | xargs docker inspect --format='{{.LogPath}}' | xargs sudo du -hl
Shakedk

2

Pour afficher 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


2

Sous Windows, l'emplacement par défaut est: C:\ProgramData\Docker\containers\<container-id>-json.log.


C'est celui-ci lors de l'exécution d'un conteneur local pour le développement! merci - il était très difficile de trouver cette info
Percy

1

Depuis le 22/08/2018, les journaux se trouvent dans:

/data/docker/containers/<container id>/<container id>-json.log

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.