Драйвер ведения журнала файлов JSON

По умолчанию Docker фиксирует стандартный вывод (и стандартную ошибку) всех ваших контейнеров и записывает их в файлы в формате JSON. В формате JSON каждая строка аннотируется её источником (stdout или stderr) и отметкой времени. Каждый файл журнала содержит информацию только об одном контейнере.

{"log":"Log line is here\n","stream":"stdout","time":"2019-01-01T11:11:11.111111111Z"}

Предупреждение

Драйвер ведения журнала json-file использует файловое хранилище. Данные файлы предназначены для исключительного доступа демона Docker. Взаимодействие с этими файлами с помощью внешних инструментов может помешать работе системы ведения журналов Docker и привести к неожиданному поведению, и этого следует избегать.

Применение

Чтобы использовать драйвер json-file в качестве драйвера ведения журнала по умолчанию, задаёт для ключей log-driver и log-opts соответствующие значения в файле daemon.json, который находится в /etc/docker/ на хостах Linux или C:\ProgramData\docker\config\ на Windows Server. Если файл не существует, сначала создаёт его. Дополнительные сведения о настройке Docker с помощью daemon.json см. в разделе daemon.json.

В следующем примере для драйвера журнала задается значение json-file, а параметры max-size и max-file задаются для включения автоматического чередования журналов.

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

Примечание

Параметры конфигурации log-opts в файле конфигурации daemon.json должны быть указаны в виде строк. Поэтому логические и числовые значения (например, значение для max-file в приведённом выше примере) должны быть заключены в кавычки (").

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

Вы можете установить драйвер ведения журнала для определённого контейнера, используя флаг --log-driver в docker container create или docker run:

$ docker run \
      --log-driver json-file --log-opt max-size=10m \
      alpine echo hello world

Параметры

Драйвер ведения журнала json-file поддерживает следующие параметры ведения журнала:

Опция

Описание

Пример значения

max-size

Максимальный размер бревна перед прокаткой. Положительное целое число плюс модификатор, представляющий единицу измерения (k, m или g). По умолчанию -1 (неограниченно).

--log-opt max-size=10m

max-file

Максимальное количество файлов журнала, которые могут присутствовать. Если при сворачивании журналов создаются лишние файлы, самый старый файл удаляется. Действует только в том случае, если также установлен max-size. Положительное целое число. По умолчанию 1. | --log-opt max-file=3

labels

Применяется при запуске демона Docker. Список разделенных запятыми меток, связанных с ведением журнала, которые принимает данный демон. Используется для продвинутых параметры тега журнала.

--log-opt labels=production_status,geo

labels-regex

Аналогично и совместимо с labels. Регулярное выражение для сопоставления меток, связанных с ведением журнала. Используется для продвинутых параметры тега журнала.

--log-opt labels-regex=^(production_status|geo)

env

Применяется при запуске демона Docker. Разделенный запятыми список переменных среды, связанных с ведением журнала, которые принимает данный демон. Используется для продвинутых параметры тега журнала.

--log-opt env=os,customer

env-regex

Аналогично и совместимо с env. Регулярное выражение для сопоставления переменных среды, связанных с ведением журнала. Используется для продвинутых параметры тега журнала.

--log-opt env-regex=^(os|customer)

compress

Переключает сжатие для повернутых журналов. По умолчанию disabled.

--log-opt compress=true

Примеры

В этом примере запускается контейнер alpine, в котором может быть максимум 3 файла журнала размером не более 10 мегабайт каждый.

$ docker run -it --log-opt max-size=10m --log-opt max-file=3 alpine ash