Я запускаю несколько контейнеров, используя docker-compose
. Я вижу журналы приложений с командой docker-compose logs
. Однако я хотел бы получить доступ к необработанному файлу журнала, чтобы отправить его где-нибудь, например? Где он находится? Я думаю, это отдельный журнал для каждого контейнера (внутри контейнера?), Но где я могу его найти?
Где файл журнала с журналами из контейнера?
Ответ 1
Журналы контейнеров можно найти в:
/var/lib/docker/containers/<container id>/<container id>-json.log
(если вы используете формат журнала по умолчанию, который является json)
Ответ 2
Вы можете docker inspect
каждый контейнер, чтобы увидеть, где находятся его журналы:
docker inspect --format='{{.LogPath}}' $INSTANCE_ID
И, если вы пытаетесь выяснить, где журналы должны управлять их общим размером, или настроить параметры самого журнала, вы найдете следующее уместным.
Фиксирование количества места, зарезервированного для журналов
Это взято из запроса на возможность очистки истории журнала (выпуск 1083):
В Docker 1.8 и docker-compose 1.4 уже существует метод ограничения размера журнала с использованием драйвера журнала docker compose и максимального размера 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 составляют файлы версии 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
команд не завершаются, если контейнер уже остановлен
Ответ 3
Чтобы увидеть, сколько места занимает каждый контейнерный журнал, используйте это:
docker ps -qa | xargs docker inspect --format='{{.LogPath}}' | xargs ls -hl
(вам может понадобиться sudo
до ls
).
Ответ 4
Чтобы напрямую просмотреть файл журнала меньше, я использую:
docker inspect $1 | grep 'LogPath' | sed -n "s/^.*\(\/var.*\)\",$/\1/p" | xargs sudo less
запускается как. /viewLogs.sh CONTAINERNAME
Ответ 5
По состоянию на 22.08.2008 логи можно найти в:
/data/docker/containers/<container id>/<container id>-json.log
Ответ 6
В Windows расположение по умолчанию: C:\ProgramData\Docker\containers\<container-id>-json.log
.