Где Docker хранит файлы журналов? – CloudSavvy ИТ
Отладка большинства программ Linux обычно включает проверку файлов журналов, что может оказаться сложным процессом. Однако при работе в контейнерной среде под Docker вам нужно будет использовать более конкретные инструменты для отладки приложений в производственной среде.
Где хранятся журналы?
Простой ответ заключается в том, что Docker хранит журналы контейнеров в своем основном месте хранения, / var / lib / docker /. У каждого контейнера есть журнал, соответствующий их идентификатору (полный идентификатор, а не сокращенный, который обычно отображается), и вы можете получить к нему доступ следующим образом:
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)
/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
Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)