Есть короткий ответ и длинный ответ. Краткий ответ, который удовлетворит ваши потребности в подавляющем большинстве случаев, таково:
/var/lib/docker/containers// -json.log
Отсюда вам нужно Корабль журналы к Центральное расположение и Включите вращение журнала Для ваших контейнеров Docker. Позвольте мне уточнить Почему с длинным ответом ниже.
Где журналы контейнеров Docker хранятся по умолчанию?
Вы видите, по умолчанию контейнеры Docker излучают журналы в stdout
и Stderr
Выходные потоки. Контейнеры без сохранения состояния и Журналы хранятся на хосте Docker в файлах JSON по умолчанию .
Почему?
Драйвер ведения журнала по умолчанию json-file Анкет Что такое драйвер журнала?
Драйвер журнала — это механизм получения информации из ваших беговых контейнеров. Вот более сложное объяснение из Docker Docs Анкет Есть несколько различных драйверов журнала, которые вы можете использовать, за исключением по умолчанию JSON-файла, например, Syslog, Journald , fluentd, или logagent Анкет
Эти журналы испускаются из выходных потоков, аннотируются с источником журнала, либо stdout
или Stderr
и метка времени. Каждый файл журнала содержит информацию только об одном контейнере и находится в формате JSON. Помните, Один файл журнала на контейнер Анкет
Вы находите эти файлы журнала JSON в /var/lib/docker/containers/
каталог на хосте Linux Docker.
Вот идентификатор работающего контейнера.
/var/lib/docker/containers// -json.log
Если вы не уверены, какой идентификатор связан с каким контейнером, вы можете запустить Docker PS
Команда, чтобы перечислить все запущенные контейнеры. Идентификатор контейнера находится в первом столбце.
docker ps [Output] CONTAINERID IMAGE COMMAND CREATED STATUS PORTS NAMES cf74b6fce535 foo_image "node app.js" X min ago Up X min 3000/tcp foo_app
В настоящее время Вы знаете, где хранятся журналы контейнеров, и вы можете продолжать устранять устранение неполадок и отладка любых возникающих проблем.
Вот где регистрация вступает в игру. Вы собираете журналы с помощью журнала и храните их в месте, где они будут доступны навсегда. Опасно держать журналы на хосте Docker, потому что они могут со временем нарастать и есть в вашем диске. Вот почему вы должны использовать Центральное расположение для ваших журналов и Включите вращение журнала Для ваших контейнеров Docker.
Отладка выпусков Docker с журналами контейнеров
Докер имеет Выделенный API Для работы с журналами. Но имейте в виду, это будет работать только в том случае, если вы используете драйвер журнала JSON-файла. Я настоятельно рекомендую не менять драйвер журнала! Давайте начнем отладку.
Прежде всего, чтобы перечислить все работающие контейнеры, используйте Docker PS
командование
docker ps
Тогда с Журналы Docker
Команда вы можете перечислить журналы для конкретного контейнера.
docker logs
В большинстве случаев вы заканчиваете эти журналы в режиме реального времени или проверяете последние несколько строк журналов.
Используя ---следовать
или -f
флаг будет хвост -f
(Следуйте) Журналы контейнеров Docker:
docker logs-f
--треск
Флаг покажет последнее количество линий журналов, которые вы указываете:
docker logs--tail N
-t
или -TimeStamp
Флаг покажет временные метки линий журналов:
docker logs-t
-Details
Флаг покажет дополнительные подробности о строках журналов:
docker logs--details
Но что, если вы хотите увидеть только конкретные журналы? К счастью, Grep работает и с журналами Docker.
docker logs| grep pattern
Эта команда покажет только ошибки:
docker logs| grep -i error
Как только приложение начинает расти, вы начинаете использовать Docker Compose. Не волнуйтесь, у него также есть команда журналов.
docker-compose logs
Это отобразит журналы из всех служб в приложении, определенном в файле конфигурации Docker Compose.
Хранение журналов контейнеров Docker в центральном месте с использованием грузоподъемника
С ростом вашей инфраструктуры вы можете полагаться на использование API Docker для устранения неисправностей журналов. Вам необходимо хранить все журналы в безопасном месте, чтобы вы могли анализировать и устранить любые проблемы после факта.
Вам нужен постоянный приток журналов, чтобы вы могли получить эффективное представление о том, что происходит с вашими контейнерами Docker. Настройка вращения журнала — это только шаг.
Хранив журналы в одном месте, вы также можете настроить оповещения, которые уведомляют вас, если что -то сломается, или когда вы испытываете неожиданное поведение.
Журналы контейнеров могут быть сочетанием простых текстовых сообщений из начальных сценариев и структурированных журналов из приложений, что затрудняет вам, какое событие журнала принадлежит к какому контейнеру и приложению.
Хотя драйверы журналов Docker могут отправлять журналы в Инструменты управления журналами , большинство из них не позволяют вам разрабатывать журналы контейнеров. Вам нужен отдельный инструмент, называемый грузовиком, например, Logagent , Logstash или rsyslog структурировать и обогатить бревна перед доставкой их.
Решение состоит в том, чтобы иметь контейнер, посвященный исключительно ведению журналов и сбора журналов. Вы развертываете выделенный контейнер для регистрации в вашей среде Docker. Он будет автоматически Совокупные журналы Из всех контейнеров, а также монитора, анализировать, и хранить или пересылать их в центральное место.
Это облегчает перемещение контейнеров между хостами и легко масштабировать вашу инфраструктуру. Он также позволяет собирать журналы через различные потоки, включая события журнала, данные Docker API, статистику и т. Д.
Это то, что я бы посоветовал вам использовать. Безусловно, наиболее надежный и удобный способ сбора журналов-использовать драйвер JSON-файла и настроить грузовик для отправки журналов. У вас всегда есть локальная копия журналов на вашем сервере, и вы получаете Преимущество централизованного управления журналами .
Если бы вы использовали Sematext Logagent Есть Несколько простых шагов Чтобы следовать, чтобы начать отправку журналов в Sematext. После Создание приложения журналов Запустите эти команды в терминале.
docker pull sematext/logagent docker run -d --restart=always --name st-logagent \ -e LOGS_TOKEN=YOUR_LOGS_TOKEN \ -e LOGS_RECEIVER_URL="https://logsene-receiver.sematext.com" \ -v /var/run/docker.sock:/var/run/docker.sock \ sematext/logagent
Это начнет отправлять все журналы контейнеров в Sematext.
Вы можете прочитать больше о том, как работает Logagent и как его использовать для мониторинга журналов в нашем посте на Мониторинг контейнера Docker с Sematext Анкет
Вывод
Там мы идем, как короткий, так и длинный ответ на то, где хранятся журналы контейнеров Docker. По умолчанию Docker использует драйвер журнала JSON-файла, который хранит журналы в выделенных каталогах на хосте:
/var/lib/docker/containers// -json.log
Длинный ответ, и то, что я бы предложил вам сделать, — это настроить выделенный контейнер для регистрации, который будет структурировать и обогатить ваши журналы контейнеров, а затем отправить их в центральное место. Это значительно облегчает поиск и поиск через журналы. Но вы также получаете предупреждение который является главным. Вы хотите знать, что перерывается, прежде чем ваши пользователи.
Надеюсь, вы, ребята и девушки, любили читать это так же, как мне понравилось писать. Если вам это понравилось, не стесняйтесь нажать кнопку «Поделиться», чтобы все больше людей увидели этот урок. До следующего раза, будьте любопытны и повеселитесь.
Оригинал: «https://dev.to/sematext/where-are-docker-logs-stored-349d»