Docker 日志保存多久

在使用 Docker 运行容器时,我们通常会关注容器的日志信息。日志是用于记录容器的运行状态和事件的重要信息。然而,随着时间的推移,日志文件会不断增长,占用过多的磁盘空间。因此,需要对 Docker 日志进行管理和保存。

Docker 日志驱动

Docker 提供了多种日志驱动,用于控制容器日志的生成和保存方式。默认情况下,Docker 使用 json-file 日志驱动,将容器的日志输出到 JSON 格式的文件中。除了 json-file,Docker 还支持其他的日志驱动,如 syslogjournaldgelf 等。

可以通过以下命令查看当前 Docker 守护进程使用的日志驱动:

docker info --format '{{.LoggingDriver}}'

日志保存策略

日志保存策略是指决定容器日志保留多久的方式。Docker 提供了两种主要的日志保存策略:按大小限制和按日期限制。

按大小限制

按大小限制的日志保存策略将根据设置的日志文件大小来切割和保留日志文件。可以通过 --log-opt 参数来指定日志文件的最大大小和保存的文件数量。例如,下面的命令将设置日志文件的最大大小为 10MB,并保留最近的 5 个日志文件:

docker run --log-opt max-size=10m --log-opt max-file=5 <image>

按日期限制

按日期限制的日志保存策略将根据日期来切割和保留日志文件。可以通过 --log-opt 参数指定日志文件的保存周期和保存的文件数量。例如,下面的命令将设置日志文件的保存周期为 7 天,并保留最近的 5 个日志文件:

docker run --log-opt max-age=7 --log-opt max-file=5 <image>

配置 Docker 日志驱动

可以通过编辑 Docker 的配置文件 /etc/docker/daemon.json 来配置 Docker 日志驱动。如果文件不存在,可以创建一个新文件。

以下是一个示例的 daemon.json 文件内容:

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

以上配置将使用 json-file 日志驱动,并设置日志文件的最大大小为 10MB,保留最近的 5 个日志文件。

修改完配置文件后,重启 Docker 服务使配置生效。

sudo systemctl restart docker

使用 Docker Compose 配置日志保存策略

如果使用 Docker Compose 来管理容器,可以使用 logging 配置项来配置日志保存策略。以下是一个示例的 docker-compose.yml 文件:

version: '3'
services:
  myapp:
    image: myapp:latest
    logging:
      driver: json-file
      options:
        max-size: 10m
        max-file: '5'

以上配置将使用 json-file 日志驱动,并设置日志文件的最大大小为 10MB,保留最近的 5 个日志文件。

总结

通过合理地配置 Docker 的日志保存策略,可以有效地管理容器的日志文件,避免占用过多的磁盘空间。我们可以根据实际需求,选择合适的日志驱动和保存策略来满足业务需求。

希望本文对您对 Docker 日志的保存多久有所帮助!

参考链接

  • [Docker Logging](
  • [Configure the Docker daemon](
  • [Docker Compose file reference](