暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

了解Docker日志之docker-log-driver

码农说一说 2021-06-10
2432

前言

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/


文章转载自码农说一说,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论