web-dev-qa-db-fra.com

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

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?

64
user606521

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)

115
Michael

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

  • issue 1866 : la commande logs ne se ferme pas si le conteneur est déjà arrêté
67
VonC

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).

5
That Brazilian Guy

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

2
icyerasor

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

0
pmohandas

À partir du 22/08/2018, les journaux peuvent être trouvés dans:

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