Настройка по умолчанию для драйвера журнала - это формат файла json, и единственный способ, с помощью которого я могу придумать надежный анализ, заключающийся в анализе файла с самого начала, что, как я подозреваю, это именно то, что делает Docker. Так что я не уверен, что есть возможность сделать именно то, что вы просите. Однако есть два параметра журнала, которые можно настроить при запуске контейнера с драйвером журнала json по умолчанию.
- максимальный размер: ограничивает размер файла журнала json. После этого Docker создаст новый файл. По умолчанию оно не ограничено (-1).
- max-file: ограничивает количество создаваемых json-файлов до максимального размера, указанного выше. По умолчанию установлено значение 1.
Вы можете прочитать об этих опциях здесь: https://docs.docker.com/config/containers/logging/json-file/
Обычно я устанавливаю эти параметры с новыми значениями по умолчанию для всех контейнеров, запускаемых на хосте докера, используя следующие строки в моем файле /etc/docker/daemon.json:
{
"log-driver": "json-file",
"log-opts": {"max-size": "10m", "max-file": "3"}
}
Эти два параметра позволяют хранить до 3 различных файлов журнала 10 мегабайт json. Результатом является ограничение между 20-30 мегами журналов на контейнер. Чтобы загрузить этот файл, необходимо запустить перезагрузку процесса dockerd (killall -HUP dockerd
или systemctl reload docker
).
Вы можете переопределить это для отдельного контейнера, передав параметры журнала в вашей команде run (или внутри файла compose):
docker container run --log-opt max-size=5m --log-opt max-file=2 ...
По-видимому, нет способа изменить параметры ведения журнала существующего контейнера, поэтому вам нужно будет заново создать контейнеры для применения этих изменений.
Конечный результат заключается в том, что docker, возможно, все еще придется анализировать весь файл, чтобы показать вам самые последние журналы, но этот файл будет намного меньше с автоматически вращающимися журналами, чем параметр неограниченной регистрации по умолчанию.