Reducing Docker Logs Size: A Practical Guide to Log Management

一篇关于如何管理和减少 Docker 日志文件大小的实用指南。

Docker 是快速部署和运行应用程序的优秀工具,但其产生的日志文件常常被忽视。这些日志文件可能会随着时间推移变得庞大,占用大量磁盘空间。例如,作者发现一个服务器的 Docker 容器在一年内积累了 14 GB 的日志文件。为了避免类似情况,该指南提供了检查、缩减 Docker 日志文件大小以及设置 Docker 以防止日志文件过大的方法。

首先,需要明确 Docker 容器的重启与重建的区别。当服务器重启时,Docker 容器会停止并重新启动,但其日志文件会持续增长,因为只有在容器被删除并重建时,日志文件才会被重置。

检查 Docker 日志文件大小的方法如下:Docker 日志文件通常保存在宿主机的 /var/lib/docker/containers/<container-id>/<container-id>-json.log 路径下。通过以下命令可以快速查看所有 Docker 容器日志文件的大小,并按从大到小排序:

find /var/lib/docker/containers/ -name "*json.log" | xargs du -h | sort -hr

为了确定日志文件对应的容器名称,可以使用以下命令:

docker inspect --format='{{.Name}}' <container_id>

清理 Docker 容器日志文件的方法是使用 truncate 命令清空指定日志文件的内容。例如:

truncate -s 0 /var/lib/docker/containers/<container-id>/<container-id>-json.log

也可以通过以下命令清空所有 Docker 日志文件:

truncate -s 0 /var/lib/docker/containers/*/*-json.log

为了从根本上限制 Docker 日志文件的大小,可以通过编辑 Docker 守护进程配置文件 /etc/docker/daemon.json 来设置日志轮转。例如,设置日志文件的最大大小为 10 MB,并保留最多 3 个日志文件副本:

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

修改配置后,需要重启 Docker 服务以应用更改:

sudo systemctl restart docker

需要注意的是,这些更改仅对新创建的容器生效,对已运行的容器无效。因此,需要删除并重新创建现有容器以应用新的日志设置。

通过以上方法,可以有效管理 Docker 日志文件的大小,避免日志文件无限制增长,从而提高服务器资源管理效率和操作效率。