在Docker容器不重建的情况下,日志文件会默认一直追加,时间长会慢慢的占满服务器硬盘空间。其实就是我们常用的docker logs命令打印的日志会打印到这个目录下的文件之中。

查看docker默认容器日志驱动
[root@xx-xx log]# docker info|grep 'Logging Driver'
 Logging Driver: json-file
查看一个运行中docker容器使用的日志驱动程序
[root@xx-xx log]# docker inspect -f '{{.HostConfig.LogConfig.Type}}' 96a7b67e2581
json-file
容器启动时使用–log-driver指定其使用与Docker容器守护进程不同的日志驱动程序
docker run -it --log-driver none xxx

容器支持的驱动:

驱动名描述
none运行的容器没有日志,docker logs没有任何输出
local日志以自定义格式存储,旨在实现最小开销
json-file日志格式为json,docker的默认日志记录驱动程序
syslog将日志消息写入syslog。改syslog守护程序必须在主机上运行
journald将日志消息写入journald。该journald守护程序必须在主机上运行
gelf将日志消息写入Graylog扩展日志格式(GELF)端点,例如Graylog或Logstash。
fluentd将日志消息写入fluentd(转发输入)。该fluentd守护程序必须在主机上运行。
awslogs将日志消息写入Amazon CloudWatch Logs。
splunk使用HTTP事件收集器将日志消息写入splunk
etwlogs将日志消息写为Windows事件跟踪(ETW)事件。仅适用于Windows平台。
gcplogs将日志消息写入Google Cloud Platform(GCP)Logging。
logentries将日志消息写入Rapid7 Logentries。
全局修改日志驱动

修改配置文件/etc/docker/daemon.json

{
  "log-driver": "none"
}
运行时控制,即在容器启动时添加参数的方式
# max-size 最大数值,必须大于0
# max-file 最大日志数,必须大于0
$ docker run -it --log-opt max-size=10m --log-opt max-file=3 容器名称
全局配置方式

创建或者修改文件/etc/docker/daemon.json,增加如下配置:

{
    "log-driver":"json-file",
    "log-opts":{
        "max-size" :"10m","max-file":"2"
    }
}

重启Docker服务

sudo systemctl daemon-reload
sudo systemctl restart docker

GitHub地址:https://github.com/mingyang66/spring-parent

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐