Docker-日志驱动配置

image.png

背景

使用docker进行部署应用时,如果未进行日志配置,当日志量不断增多时会导致磁盘被占满的情况。

当前 jenkins、gitlab、rancher都是使用docker部署在VM上的,因启动时为配置容器日志大小清理策略,导致占用系统盘过多响应缓慢
image.png

清理方案

手动清理

当服务正在线上访问无法重启可以进入到指定容器目录下将该日志文件删除

1
echo "" > 57b29803175d92e373df64ff104f034d201de3e74d1b0b90ca4f4a7b04e5dde7-json.log

Docker 日志驱动设置

启动容器时配置

1
docker run --log-opt max-size=1024m --log-opt max-file=3 [image]

全局配置:修改docker daemon.json文件,配置日志文件参数,默认 /etc/docker/daemon.json

1
2
3
4
5
6
7
{
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "1"
}
}
  • log-driver:

这个参数用于指定 Docker 容器的日志驱动程序。在这个例子中,它被设置为 json-file,这意味着 Docker 容器的日志将被写入到 JSON 文件中。

  • log-opts:

这个参数用于配置日志驱动程序的选项。在这个例子中,配置了两个选项:max-size 和 max-file。

  • max-size:

这个选项用于限制日志文件的最大大小。在这个例子中,它被设置为 50m,这意味着每个日志文件的大小不会超过 50 兆字节。当日志文件的大小达到这个限制时,Docker 会自动轮转日志文件,即关闭当前的日志文件,并创建一个新的日志文件来记录后续的日志。

  • max-file:

这个选项用于限制保留的日志文件的数量。在这个例子中,它被设置为 1,这意味着 Docker 会保留最近的一个日志文件。当日志文件的数量超过这个限制时,Docker 会自动删除最旧的日志文件。

修改后,docker 需要重新加载配置文件和重启。

1
2
systemctl daemon-reload
systemctl restart docker

对于已经创建了的容器,需要进行重新创建才能应用到该配置

相关资料

  1. Docker 日志驱动配置:https://docs.docker.com/config/containers/logging/configure/

Docker-日志驱动配置
https://mikeygithub.github.io/2024/04/09/yuque/Docker-日志驱动配置/
作者
Mikey
发布于
2024年4月9日
许可协议