JSON文件记录驱动程序

预计阅读时间:3分钟

默认情况下,Docker捕获所有容器的标准输出(和标准错误),并使用JSON格式将它们写入文件中。JSON格式使用其原点(stdoutstderr)和其时间戳来注释每一行。每个日志文件仅包含有关一个容器的信息。

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

警告

json-file日志驱动程序使用基于文件的存储。这些文件旨在由Docker守护程序独家访问。使用外部工具与这些文件进行交互可能会干扰Docker的日志记录系统并导致意外行为,因此应避免使用。

用法

要将json-file驱动程序用作默认的日志记录驱动程序,请在Linux主机或Windows Server上 的文件中将log-driverlog-opts键设置为适当的值。有关使用来配置Docker的更多信息,请参阅 daemon.jsondaemon.json/etc/docker/C:\ProgramData\docker\config\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 createdocker run

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

选项

json-file日志驱动程序支持以下日志记录选项:

选项 描述 示例值
max-size 滚动日志之前的最大大小。一个正整数加上代表测量单位的改性剂(km,或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 MB。

$ docker run -it --log-opt max-size=10m --log-opt max-file=3 alpine ash
json文件docker日志记录驱动程序