Docker 服务日志驱动说明

2019-07-18 0 By admin

一、默认日志驱动说明

在 CentOS 7 操作系统上部署docker 服务,一般情况下docker服务默认的日志驱动为journald。 可以通过以下命令查看:
#docker info |grep Loogging
Logging Driver: journald

docker 服务中的容器,会将标准输出和错误输出都交给日志驱动来处理;这时journald 服务接受到这些内容,会交给rsyslogd 服务将内容写入到磁盘中。
一般情况下这些日志会写入到/var/log/message 文件中。

1.1、问题说明

如果容器运行中,有大量的日志抛出到标准输出中;根据上面的说明,这些日志都会写入的message文件中去。
这样会导致message 文件增长迅速;如果我们运行多个容器的话,会使文件中的日志内容混乱,不易阅读。

1.2、解决方式

docker 服务提供了多种日志驱动,可以考虑使用其他驱动方式。

二、修改日志驱动为JSON-FILE 说明

2.1、JSON FILE 日志驱动说明

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

日志存储位置: /var/lib/docker/containers/<容器id>/<容器id>-json.log 。 不建议直接打开日志文件阅读,可以使用dokcer logs 命令查看日志。

2.2、配置参数

  1. max-size:滚动之前日志的最大大小。
  2. max-file:可以存在的最大日志文件数。
  3. compress:日志是否压缩。

2.3、配置方式1

对docker 服务全局配置
1、在 /etc/docker/daemon.json 文件中添加配置参数。
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}}

2、删除docker 配置文件中其他日志驱动配置项 在 /etc/sysconfig/docker 配置文件中
OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'
改为
OPTIONS='--selinux-enabled --signature-verification=false'
重启docker 服务就可以生效了;另外因为日志驱动类型属于容器的一个属性,所以重启容器服务并不能改变其日志驱动类型。需要将旧的容器删除掉,重新创建新容器。

2.4、配置方式2

每个容器启动时添加有关日志驱动的启动参数。 配置项添加的方式:
--log-driver json-file --log-opt max-size=10m --log-opt max-file=3
PS:配置项需要添加到比较靠前的位置。