docker 容器日志过大问题

docker 容器日志过大问题

docker 日志文件存放哪些日志

Docker容器的标准输出(stdout)和标准错误输出(stderr)被发送到容器的日志驱动程序,这些日志可以通过 docker logs 命令来访问。默认情况下,Docker将这些日志存储在宿主机上的 /var/lib/docker/containers// 目录中,每个容器都有一个单独的目录。

如何清理 docker 日志文件

清理Docker日志文件的方法通常包括手动清理以及使用工具自动清理;

业务控制

减少业务的输出,可以控制日志量,但这并不是一个好的方法。

临时清理

可以通过以下命令临时清理,但这只是临时的方法,不能根治。

1logs=$(find /var/lib/docker/containers/ -name *-json.log*) ; for log in $logs ; do echo "clean logs : $log" ; cat /dev/null > $log ; done

Docker日志驱动配置

使用Docker的日志驱动配置选项来限制日志文件大小和保留时间。你可以在运行容器时使用 --log-opt 选项来配置日志的最大大小和保留时间,从而使Docker自动清理过期的日志。
关于日志驱动配置可以分为以下两个方法:

  1. 启动容器时进行设置
1# max-size 最大数值
2# max-file 最大日志数
3$ docker run -it --log-opt max-size=10m --log-opt max-file=3 nginx
  1. 通过daemon.json 全局修改
1{
2    "log-driver":"json-file",
3    "log-opts":{
4        "max-size" :"50m","max-file":"1"
5    }
6}

这个需要重启docker .

选择清理方法取决于你的需求和环境。手动清理适用于简单的清理任务,而使用工具自动清理可以提高效率并降低人为错误的风险。