Docker容器日志的种类以及存储
Docker容器日志的种类以及存储
作者: Yisany
原文: https://www.cnblogs.com/yisany/p/13725504.html
Docker 日志#
•stdout标准输出日志
stdout就是标准输出里面的日志, 比如程序运行时输出在控制台的内容就会写入标准输出
原理就是当在启动进程的时候,进程之间有一个父子关系,父进程可以拿到子进程的标准输出•文件日志
直接写入磁盘的日志, 例如java使用log4j框架直接将日志落盘(不在控制台输出)就是典型的文件日志
1. 查看日志
docker logs [containerID]
命令查看容器的日志。$ docker logs [OPTIONS] CONTAINER
Options:
--details 显示更多的信息
-f, --follow 跟踪实时日志
--since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
--tail string 从日志末尾显示多少行日志, 默认是all
-t, --timestamps 显示时间戳
--until string 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)
例子:
•查看指定时间后的日志,只显示最后100行:
$ docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID
•查看最近30分钟的日志:
$ docker logs --since 30m CONTAINER_ID
•查看某时间之后的日志:
$ docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID
•查看某时间段日志:
$ docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID
2. 日志在哪?
/var/lib/docker
文件夹下, 具体的信息可以通过 docker inspect
命令查看:$ docker inspect [OPTIONS] CONTAINER
例如:
$ docker inspect -f {{".LogPath"}} 2be
输出:
/data/docker/containers/2be9b6dc81a557d11d84bc33bf1062462da9b62e59cc9faef9251bdcff26f3ad/2be9b6dc81a557d11d84bc33bf1062462da9b62e59cc9faef9251bdcff26f3ad-json.log
这就是这个容器的日志记录文件了
日志文件相关信息
json-file
模式:选项 | 描述 | 示例值 |
max-size | 日志文件的最大大小, 默认为-1(无限制) | --log-opt max-size=10m |
max-file | 可以存在的最大日志文件数。如果滚动日志会创建多余的文件,则会删除最早的文件。仅在max-size 设置时有效。一个正整数。默认为1。 | --log-opt max-file=3 |
labels | 在启动Docker守护程序时适用。该守护程序接受的与日志记录相关的标签的逗号分隔列表。用于高级日志标签选项。 | --log-opt labels=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 |
3. 配置LogDriver
json-file
模式:Driver | Description |
none | 丢弃容器输出 |
local | 日志以自定义格式存储 |
json-file | 日志存储格式为json, 默认的logdriver驱动 |
syslog | 日志写入到指定的syslog地址 |
journald | 日志写入到指定jounald |
gelf | 以gelf格式发送日志 |
fluentd | 日志发送到指定的fluentd服务 |
awslogs | 日志发送到指定的Amazon CloudWatch Logs |
splunk | 日志发送到指定的splunk服务 |
etwlogs | 日志发送到Event Tracing for Windows, 仅支持windows平台 |
gcplogs | 日志发送到Google Cloud日志系统 |
logentries | 日志发送到Rapid7 Logentries |
•修改Docker Daemon, 这样会对所有容器生效, 以syslog为例:
dockerd --log-driver=syslog --log-opt syslog-address=127.0.0.1:514
•在容器启动时加上配置项, 这样配置只会对当前容器生效:
docker run --log-driver=syslog --log-opt syslog-address=127.0.0.1:514 nginx:laster
docker plugin install
进行安装, 详情可见: https://docs.docker.com/config/containers/logging/plugins/欢迎关注我的公众号“须弥零一”,更多技术文章第一时间推送。
评论