Где файл журнала с журналами из контейнера?

117

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

user606521
источник

Ответы:

192

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

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

(если вы используете формат журнала по умолчанию - json)

Майкл
источник
3
Есть много папок вроде 004279dd2985037950beeba7e6fe45c10354476d3b82afb68e72dd612b03a8ff. Как узнать, в какой папке искать конкретный контейнер?
Правин Шрипати,
3
@PraveenSripati - идентификатор контейнера для запущенных контейнеров показан в первом столбце, если вы это сделаетеdocker ps
CS
1
@PraveenSripati, напишите docker ps, вы получите все доступные контейнеры вместе с их идентификаторами. Скопируйте идентификатор желаемого контейнера, затем из /var/lib/docker/containers/запуска ls | grep <paste the copied docker ID>. Затем вы увидите этот докер-контейнер
TheLebDev
cd /var/lib/docker/containers/ -bash: cd: / var / lib / docker / container /: в доступе отказано sudo cd /var/lib/docker/containers/ sudo: cd: command not found
canbax
2
@Chris, я должен был сделать docker ps --no-trunc, чтобы увидеть весь id
Дэн З.
97

Вы можете docker inspectувидеть, где находятся журналы каждого контейнера:

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

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

Исправление количества места, зарезервированного для журналов

Это взято из запроса на возможность очистки журнала журнала (проблема 1083) ):

Docker 1.8 и docker-compose 1.4 уже существует способ ограничения размера журнала с помощью драйвера журнала docker compose и max-size log-opt:

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

В docker compose files версии '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не завершается, если контейнер уже остановлен
VonC
источник
1
Краткая версия: docker inspect -f '{{.LogPath}}' $ INSTANCE_ID
Bienvenido David
12

Чтобы узнать, сколько места занимает журнал каждого контейнера, используйте это:

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

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

Тот бразильский парень
источник
Мне отказали в разрешении.
Shakedk 06
1
Добавление sudo в конце помогло: docker ps -qa | xargs docker inspect --format='{{.LogPath}}' | xargs sudo du -hl
Shakedk 06
2

Чтобы напрямую просмотреть файл журнала с меньшими затратами, я использую:

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

запустить как ./viewLogs.sh ИМЯ КОНТЕЙНЕРА

icyerasor
источник
2

В Windows, расположение по умолчанию: C:\ProgramData\Docker\containers\<container-id>-json.log.

pmohandas
источник
Это тот, который используется при запуске локального контейнера для разработки! спасибо - было очень сложно найти эту информацию
Перси
1

По состоянию на 22.08.2018 журналы можно найти в:

/data/docker/containers/<container id>/<container id>-json.log
Lixzhang
источник
1
docker inspect <containername> | grep log
Василий Паскаль
источник