Где Docker хранит файлы журналов? — CloudSavvy ИТ

Отладка большинства программ Linux обычно включает проверку файлов журналов, что может оказаться сложным процессом. Однако при работе в контейнерной среде под Docker вам нужно будет использовать более конкретные инструменты для отладки приложений в производственной среде.

Где хранятся журналы?

Простой ответ заключается в том, что Docker хранит журналы контейнеров в своем основном месте хранения, / var / lib / docker /. У каждого контейнера есть журнал, соответствующий их идентификатору (полный идентификатор, а не сокращенный, который обычно отображается), и вы можете получить к нему доступ следующим образом:

/var/lib/docker/containers/ID/ID-json.log

Это куда они хранятся, но поскольку они в формате JSON, их нелегко прочитать, и необходимость использовать полный идентификатор контейнера раздражает. Docker предоставляет встроенную команду для их просмотра:

журналы докеров -f e4bd48ef3103

Здесь флаг -f будет держать приглашение открытым и «следить» за любыми новыми записями в файле. Вы также можете использовать —tail для файла или использовать —timestamps для отображения времени журнала, или использовать —until и —since для фильтрации по времени.

Если вы используете Docker Compose, вы можете использовать команду log из этого, чтобы легко просматривать все журналы:

журналы составления докеров

Однако вы заметите одну вещь: это STDOUT и STDERR, которые полезны для многих вещей, но показывают только консольный вывод точки входа, указанной параметром «CMD» в файле Docker. Многие приложения имеют свои собственные специализированные системы ведения журналов, которые часто регистрируются в файлах типа /var/log/nginx/access.log. Доступ к таким журналам по-прежнему возможен со стороны хоста через Docker.

Просмотр журналов из приложений внутри контейнеров

В зависимости от контейнера в этом может быть нет необходимости. Например, контейнер NGINX по умолчанию настроен для отправки журналов Docker в STDOUT, чтобы упростить проверку журналов. Он делает это с помощью символической ссылки из / dev / stdout в файл журнала, и вы можете настроить что-то подобное для своих контейнеров.

RUN ln -sf / dev / stdout /var/log/nginx/access.log && ln -sf / dev / stderr /var/log/nginx/error.log

Но если вы хотите извлечь определенные файлы внутри контейнера, вы можете это сделать. Docker предоставляет команду exec -it, позволяющую запускать любую команду внутри любого запущенного процесса Docker. Используя это, вы можете заключить файл журнала в контейнер Docker:

docker exec -it e4bd48ef3103 tail -f log.txt

Поскольку это позволяет вам запускать любую команду, вы можете использовать journalctl или любые другие стратегии отладки, которые захотите, если вы предваряете их docker exec -it. Вы даже можете запустить / bin / bash, если хотите залезть туда и покопаться.

Более постоянное решение, которое лучше подходит для хост-сервисов, — это использование монтирования тома Docker. Вы можете привязать каталог, например / var / log / nginx, к тому, который виден с хоста. Сначала создайте новый том:

том docker создать nginx-logs

И запустите контейнер с параметром —mount:

docker run -d —name devtest —mount source = nginx-logs, target = / var / log / nginx nginx: latest

Если вы используете Docker Compose, процесс можно автоматизировать:

версия: «3.0» сервисы: web: изображение: nginx: последние порты: — тома «80:80»: — nginx-logs: / var / log / nginx / volume: nginx-logs:

Таким образом, файлы журналов будут напрямую доступны для любых служб агрегирования журналов на хост-машине.

Просмотр журналов Docker Daemon

Если вместо этого вы хотите просматривать журналы, относящиеся к общей службе Docker на вашем сервере, а не для какого-либо конкретного контейнерного приложения, вам нужно просмотреть журналы journalctl:

sudo journalctl -fu docker.service

Здесь он хранится в большинстве систем, но в некоторых он находится в другом месте:

  • Amazon Linux: / var / log / docker.
  • CentOS / RHEL: / var / log / messages | grep docker
  • macOS: ~ / Библиотека / Контейнеры / com.docker.docker / Data / log / vm / dockerd.log
  • Windows: AppData Roaming Docker log vm dockerd.log

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *