docker log

在默认情况下,Docker 的日志驱动器是 json-file,这意味着容器的日志会保存到 JSON 格式的文件中。这个驱动器会将容器的标准输出和标准错误输出写入到一个或多个 JSON 格式的文件中,这些文件通常位于容器的 /var/lib/docker/containers/<container-id>/ 目录下。

如果没有显式指定 --log-driver,则 Docker 将使用默认的 json-file 驱动器。在这种情况下,日志文件会持续增长,直到达到磁盘的限制。因此,如果你使用默认配置,建议定期检查和管理容器的日志,以避免占用过多磁盘空间。

当你配置 --log-opt max-size=100m 时,表示设置容器的日志文件最大大小为 100MB。一旦日志文件达到这个大小,Docker 将自动创建一个新的日志文件,并将日志继续写入新文件。旧的日志文件将保留在磁盘上,除非使用日志管理工具或手动进行清理,否则这些旧的日志文件可能会一直存在。

Docker 默认会将容器的日志文件存放在宿主机的 /var/lib/docker/containers/<container-id>/ 目录下。在这个目录中,每个运行的容器都有一个唯一的标识符(<container-id>),并在该目录下创建一个子目录以存储该容器的相关数据,包括日志文件。

例如,如果你有一个运行中的容器,其容器标识符是 abcdef123456,那么该容器的日志文件将存储在路径 /var/lib/docker/containers/abcdef123456/ 中。

logrotate 是一个常用的日志轮转工具,用于管理和轮转日志文件。它可以帮助你定期备份、压缩和删除旧的日志文件,以便更好地管理磁盘空间。以下是使用 logrotate 来轮转 Docker 容器日志文件的基本步骤:

  1. 安装 logrotate: 如果你的系统上没有安装 logrotate,你需要先安装它。具体的安装方式取决于你使用的操作系统。在大多数 Linux 发行版上,你可以使用包管理工具来安装 logrotate。例如,在 Ubuntu 上,可以运行以下命令:sudo apt-get install logrotate
  2. 配置 logrotate: 创建一个 logrotate 配置文件,以告诉 logrotate 如何处理 Docker 容器的日志文件。在 /etc/logrotate.d/ 目录下创建一个新文件,例如 docker-containers,并添加以下内容:
/var/lib/docker/containers/*/*.log {
    rotate 7
    daily
    compress
    missingok
    delaycompress
    copytruncate
}
  • rotate 7: 保留过去7个日志文件,旧的将被删除。
  • daily: 每天轮转一次。
  • compress: 使用 gzip 压缩旧的日志文件。
  • missingok: 如果日志文件不存在,忽略而不报错。
  • delaycompress: 在下一次轮转时才压缩。
  • copytruncate: 将当前日志文件复制为新文件,然后截断原文件,这样容器可以继续写入。
  1. 手动运行 logrotate 进行测试

sudo logrotate -d /etc/logrotate.conf

  1. 默认情况下,logrotate 通常由定时任务自动触发。查看系统的定时任务设置,确保 logrotate 定期执行。在大多数 Linux 发行版上,logrotate 的定时任务通常存储在 /etc/cron.daily/ 目录中

注:上述内容摘抄自网络

 

此条目发表在info分类目录。将固定链接加入收藏夹。