You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

生产环境磁盘空间不足,如何清理Docker容器日志并保留近30天日志?

Docker容器日志相关问题解答

一、容器日志清理方案

你无法cd进入/var/lib/docker/containers是因为该目录默认仅root用户有权限访问,所有操作加sudo即可执行:

  • 按需保留最近30天日志,清理更早的过期日志:
    执行命令:
    sudo find /var/lib/docker/containers/ -name "*-json.log" -mtime +30 -delete
    
    命令中-mtime +30代表筛选修改时间超过30天的文件,匹配后直接删除。
  • 应急清空所有容器日志(快速释放磁盘空间,无历史日志保留需求时使用):
    执行命令:
    sudo sh -c 'truncate -s 0 /var/lib/docker/containers/*/*-json.log'
    
    该命令仅将日志文件大小截断为0,不会删除文件,不影响运行中容器写入日志。
  • 长期避免日志占满磁盘的配置方案:
    配置Docker全局日志轮转规则,修改/etc/docker/daemon.json文件(如果文件不存在可直接创建),添加如下配置:
    {
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "100m",
        "max-file": "3",
        "max-age": "30d"
      }
    }
    
    参数说明:max-size限制单个日志文件最大为100M,max-file限制最多保留3个轮转日志文件,max-age限制日志最多保留30天。配置完成后执行命令生效:
    sudo systemctl daemon-reload && sudo systemctl restart docker
    
    注意:该配置仅对新创建的容器生效,已有容器需要重建后才会应用该日志规则。

二、查看容器日志生成时间

  • 查看日志文件的最后更新时间(对应日志中最后一条记录的生成时间):
    执行命令:
    sudo ls -lh /var/lib/docker/containers/*/*-json.log
    
    输出结果中的时间字段即为对应日志文件的最后修改时间。
  • 查看具体容器的日志时间范围:
    使用Docker原生命令即可查看,无需访问容器目录,比如查看某容器最近30天的日志:
    docker logs --since 720h <容器ID或容器名称>
    
    输出的每条日志开头默认自带时间戳。
  • 批量查看所有容器日志的最早、最晚生成时间:
    需提前安装jq工具解析JSON格式的容器日志,执行命令:
    sudo sh -c 'for log in /var/lib/docker/containers/*/*-json.log; do echo "日志路径: $log"; echo "最早日志时间: $(head -n1 $log | jq -r '.time')"; echo "最晚日志时间: $(tail -n1 $log | jq -r '.time')"; echo "---"; done'
    

内容的提问来源于stack exchange,提问作者Tiago Silva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 05:54:05