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驱动程序设置为默认的日志记录驱动程序,请在daemon.json文件中将log-driver和log-opts键设置为适当的值,该文件位于Linux主机上的/etc/docker/或Windows Server上的C:\ProgramData\docker\config\。如果文件不存在,请先创建它。有关使用daemon.json配置Docker的更多信息,请参阅daemon.json。
以下示例将日志驱动程序设置为json-file,并设置max-size和max-file选项以启用自动日志轮换。
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}注意
log-opts配置文件中的配置选项必须以字符串形式提供。因此,布尔值和数值(例如上面示例中的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 日志驱动程序支持以下日志选项:
| Option | Description | Example value |
|---|---|---|
max-size | The maximum size of the log before it is rolled. A positive integer plus a modifier representing the unit of measure (k, m, or g). Defaults to -1 (unlimited). | --log-opt max-size=10m |
max-file | The maximum number of log files that can be present. If rolling the logs creates excess files, the oldest file is removed. Only effective when max-size is also set. A positive integer. Defaults to 1. | --log-opt max-file=3 |
labels | Applies when starting the Docker daemon. A comma-separated list of logging-related labels this daemon accepts. Used for advanced 日志标签选项. | --log-opt labels=production_status,geo |
labels-regex | Similar to and compatible with labels. A regular expression to match logging-related labels. Used for advanced
日志标签选项. | --log-opt labels-regex=^(production_status|geo) |
env | Applies when starting the Docker daemon. A comma-separated list of logging-related environment variables this daemon accepts. Used for advanced 日志标签选项. | --log-opt env=os,customer |
env-regex | Similar to and compatible with env. A regular expression to match logging-related environment variables. Used for advanced
日志标签选项. | --log-opt env-regex=^(os|customer) |
compress | Toggles compression for rotated logs. Default is disabled. | --log-opt compress=true |
示例
这个示例启动了一个alpine容器,该容器最多可以有3个日志文件,每个文件的大小不超过10兆字节。
$ docker run -it --log-opt max-size=10m --log-opt max-file=3 alpine ash