前言
docker logs命令基本上是运维和研发在使用docker时候输入最多的命令之一了。但是对于日志而言我们不单单只是需要查看而已,大多数情况下我们需要对其进行管控,比如日志滚动时管理、日志大小限制,甚至日构建docker logs命令基本上是运维和研发在使用docker时候输入最多的命令之一了。但是对于日志而言我们不单单只是需要查看而已,大多数情况下我们需要对其进行管控,比如日志滚动时管理、日志大小限制,甚至日聚合、报警。
docker-log-driver
默认情况下运行中的容器日志存放的目录是/var/lib/docker/containers/容器ID/容器ID-json.log
如下图:
那么是否可以对日志存储目录或存储方式进行调整呢?答案是肯定的可以的。docker-log-driver是docker对外提供的一套日志驱动接口,开发者可以实现自定义的容器日志插件程序。当然docker-log-driver也提供了多套现成的日志驱动插件。常用的日志驱动插件:
local json-file gelf syslog fluentd loki
其中local、json-file都是使用本地文件的方式,且文件格式和存储机制被设计为由Docker守护进程独占访问,不应被外部工具使用。json-file是docker默认使用的日志驱动插件,需注意的是日志的销毁是随着容器而销毁,stop容器不会导致日志销毁,rm容器后日志才跟随其一并移除。
设置容器的日志驱动
两种方式设置容器的日志驱动,1、全局设置;2、容器启动时通过携带参数--log-driver 、--log-opt对日志驱动插件进行配置。
全局设置Docker日志驱动该插件
修改docker配置文件 /etc/docker/daemon.json
{
"log-driver": "loki",
"log-opts": {
"loki-url": "http://YOUR_IP:3100/loki/api/v1/push",
"max-size": "50m",
"max-file": "10"
}
}复制
如上面的配置文件设置了docker日志驱动插件为loki,loki-url是日志推送的地址,max-size看名字就知道是单文件最大大小,maxfile是容器的最大文件数,超过的不进行处理。需要注意的是保存了配置文件后不会影响已启动的容器,只有重启容器或启动构建新的容器才会走新的日志驱动。注意上面的配置文件生效后不会在目录/var/lib/docker/containers/容器ID/
生成新的日志文件,日志会走日志驱动插件的存储流程,当然使用命令docker logs还是会将容器日志打印出来。
单个容器设置Docker日志驱动该插件
docker run \
--log-driver json-file --log-opt max-size=10m \
alpine echo hello world复制
参考官网 :https://docs.docker.com/config/containers/logging/