Де знаходиться файл журналу з журналами з контейнера?


116

Я запускаю кілька контейнерів за допомогою docker-compose. Я бачу журнали програм із командою docker-compose logs. Однак я хотів би отримати доступ до сировинного файлу журналу, щоб надіслати його кудись, наприклад? Де це знаходиться? Я думаю, що це окремий журнал для кожного контейнера (всередині контейнера?), Але де його знайти?

Відповіді:


190

Журнали контейнера можна знайти в:

/var/lib/docker/containers/<container id>/<container id>-json.log

(якщо ви використовуєте формат журналу за замовчуванням, який є json)


3
Папок дуже багато 004279dd2985037950beeba7e6fe45c10354476d3b82afb68e72dd612b03a8ff. Як дізнатися, в якій папці слід шукати конкретний контейнер?
Praveen Sripati

3
@PraveenSripati ідентифікатор контейнера для запуску контейнерів відображається в першому стовпці, якщо ви це зробитеdocker ps
CS

1
@PraveenSripati write docker ps, ви отримаєте всі наявні контейнери разом з їх ідентифікаторами. Скопіюйте ідентифікатор потрібного контейнера, а потім /var/lib/docker/containers/запустіть ls | grep <paste the copied docker ID>. Тоді ви побачите той контейнер
докера

cd /var/lib/docker/containers/ -bash: cd: / var / lib / docker / контейнери /: В дозволі відмовлено sudo cd /var/lib/docker/containers/ sudo: cd: команда не знайдена
canbax

2
@Chris Мені довелося це зробити docker ps --no-trunc, щоб побачити весь ідентифікатор
Dan Z

97

Ви можете docker inspectкожен контейнер, щоб побачити, де їх журнали:

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

І, якщо ви намагалися розібратися, де журнали повинні керувати їх колективним розміром, або відрегулювати параметри самого ведення журналу, ви знайдете відповідне наступне.

Виправлення кількості місця, відведеного для журналів

Це взято з Запити на можливість очищення історії журналів (випуск 1083 ):

Docker 1.8 і docker-compose 1.4 вже існує метод обмеження розміру журналу, використовуючи драйвер журналу docker compose і opt-max max-size:

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

У композиційних файлах докер версії '2' синтаксис трохи змінився:

version: '2'
...
mycontainer:
  ...
  logging:
    #limit logs to 200MB (4rotations of 50M each)
    driver: "json-file"
    options:
      max-size: "50m"
      max-file: "4"

(зауважте, що в обох синтаксисах числа виражаються як рядки, у лапки)

Можлива проблема з docker-compose logsне закінченням

  • випуск 1866 : команда logsне виходить, якщо контейнер вже зупинений

1
Коротка версія: docker inspect -f '{{.LogPath}}' $ INSTANCE_ID
Bienvenido David

12

Щоб побачити, скільки місця займає журнал кожного контейнера, скористайтеся цим:

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

(можливо, вам знадобиться sudoраніше ls).


Мені в дозволі відмовлено.
Шекек

1
Додавання судо в кінці допомогло: docker ps -qa | xargs docker inspect --format='{{.LogPath}}' | xargs sudo du -hl
Шекедк

2

Для прямого перегляду журналу файлів менше, я використовую:

docker inspect $1 | grep 'LogPath' | sed -n "s/^.*\(\/var.*\)\",$/\1/p" | xargs sudo less

запустити як ./viewLogs.sh CONTAINERNAME


2

У Windows, розташування за замовчуванням: C:\ProgramData\Docker\containers\<container-id>-json.log.


Це той, коли працює локальний контейнер для розробки! дякую - дуже важко було знайти цю інформацію
Персі

1

Станом на 22.08.2018 журнали можна знайти у:

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.