如何解决由于 Docker 的大日志文件导致磁盘空间不足的问题

本文介绍由于 Docker 的大日志文件所导致的磁盘空间不足进而引发的一些系统问题,例如:

  • 磁盘上无法写入文件
  • 作为 K8s 的唯一节点,由于磁盘空间不足,导致 Pod 无法被调度到该节点上,一直处于 Pending 状态。

解决思路其实很简单就是 "找到 Docker 的大日志文件并删除它!"。

步骤一、确定大目录

  1. 首先我们需要查看 /var/lib/docker 目录下各子目录的大小,以此来找到大目录,执行命令如下:

    bash 复制代码
    du -sh /var/lib/docker/*

    输出示例:

  2. 通过输出列表,找到占用空间较大的目录,例如:/var/lib/docker/overlay2

步骤二、确定 .log 大文件

  1. 通过【步骤一】中确认的大目录,从该目录中确认是否存在占用空间较大的 .log 文件,执行命令如下:

    bash 复制代码
    sudo find ${目标大目录} -name '*.log' -exec du -sh {} \; | sort -hr

    ${目标大目录} 替换为【步骤一】中确认的大目录,例如:/var/lib/docker/overlay2

  2. 根据输出列表,找到 .log 大文件

    如果我们从输出列表中发现某个 .log 文件有几十个G,那基本上就可以把它删除来达到释放空间的目的了。

步骤三、删除 .log 大文件

通过【步骤三】我们确定了要删除的 .log 大文件,剩下的就是删除它了,执行命令如下:

bash 复制代码
sudo truncate -s 0 ${日志文件}

${日志文件} 替换为【步骤二】中确认要删除的 .log 大文件,例如:/var/lib/docker/overlay2/fd9846cef0d3c6c0df342.../merged/logs/datapix-server/datapix-server.2025-12-15.log

步骤四、优化 Docer 日志策略

为了预防以后再次发生 Docker 日志爆炸的问题,可通过如下操作:

  1. 编辑或创建 /etc/docker/daemon.json 文件,在该文件中添加如下内容:

    json 复制代码
    {
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "100m", // 单个日志文件最大 100MB
        "max-file": "3" // 最多保留 3 个历史日志文件
      }
    }
  2. 重启 Docker 使日志策略生效,执行命令如下:

    bash 复制代码
    sudo systemctl restart docker

    (注:此配置只对新创建的容器生效。已有容器需要重建才能应用新日志策略)

相关推荐
Alsn8615 小时前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
程序员老赵18 小时前
服务器没有桌面?Docker 跑个 Chrome,浏览器就能远程用
docker·容器·devops
杨浦老苏18 小时前
轻量级Docker仪表板Servedash
运维·docker·监控·群晖·仪表板
正经教主18 小时前
【docker基础】 第八周:容器监控与应用更新策略
运维·docker·容器
kiros_wang18 小时前
Docker 使用完整指南
运维·docker·容器
正经教主19 小时前
【docker基础】第九周:Docker安全与镜像优化
运维·docker·容器
CodeStats21 小时前
【虚拟机】 从 CPU 指令到虚拟机隔离:虚拟机就是一个“模拟了完整硬件的普通进程”
java·docker
ai产品老杨21 小时前
突破安防碎片化:基于 Docker 与边缘计算的 AI 视频智能化中台,如何通过 GB28181/RTSP 统一接入与全套源码交付实现二次开发自由?
人工智能·docker·边缘计算
正经教主1 天前
【docker基础】第十三周:学习总结与进阶方向【完结】
运维·docker·容器
“码”力全开1 天前
解耦异构设备:基于 Docker 与边缘计算的 GB28181/RTSP 统一流媒体平台架构演进(全源码交付)
docker·架构·边缘计算