VVPSKAN

部署

Docker日志占满磁盘怎么处理?定位、释放与日志轮转

证据状态:官方文档、明确条件与可重复步骤;页面未标注的数据不视为本站实测。

直接答案:先用docker system df和du确认占用是否来自容器日志,不要直接运行带--volumes的全量清理。默认json-file日志可以通过Docker daemon或Compose设置max-size和max-file;新默认设置通常只影响之后创建的容器。

先分清日志、镜像、缓存和卷

docker system df给出总体分类,容器日志需要查看实际LogPath。镜像占用大和单个JSON日志无限增长是两类问题,处理方式不同。

不要盲目使用prune --volumes

未使用卷可能保存停止的数据库或上传文件。清理前列出对象、确认Compose项目和备份。镜像可以重新拉取,卷中的业务数据可能无法恢复。

配置json-file日志轮转

在/etc/docker/daemon.json的log-opts设置max-size与max-file,或在Compose中为高日志服务单独配置logging。新默认值通常只作用于之后创建的容器,重建前先检查卷和环境变量。

验证并防止复发

用docker inspect确认日志驱动和路径,再观察文件是否轮转。为宿主机磁盘、inode和日志增长设置告警,同时修复应用异常刷日志的根因。

把配置变成可验证的部署

总成本由服务器、备份、域名、日志存储和维护时间组成。容器数量不能直接换算成配置,应记录峰值资源。

  1. 列出容器、数据库、缓存和定时任务。
  2. 部署后用 docker stats、free 和 df 建立基线。
  3. 模拟升级、重启和磁盘增长。
  4. 把Compose文件、环境变量清单和数据备份保存在服务器之外。
docker system df docker ps --size sudo du -ah /var/lib/docker/containers | sort -h | tail -20 docker inspect --format '{{.Name}} {{.HostConfig.LogConfig.Type}} {{.LogPath}}' $(docker ps -q)

命令用于读取Docker空间、容器大小和日志路径。Docker数据目录可能不是/var/lib/docker,先用docker info确认。

哪些情况下不应这样选

  • 必须零运维,却选择完全自管的Linux服务器。
  • 没有恢复方案就把数据库和用户文件放进单台机器。
资料与边界

本文结合官方文档和可重复的验收方法编写。未标注“实测”的数据不作为跑分或线路承诺;价格、资格和产品限制应以购买当天的官方页面为准。

常见问题

清空容器日志会删除数据库吗?

日志与数据库卷通常不同,但直接操作Docker目录有风险,必须先确认LogPath和持久化位置。

修改daemon.json后旧容器会自动轮转吗?

通常不会,应在维护窗口重新创建目标容器并验证。

docker system prune安全吗?

它会删除未使用对象。必须先查看内容,关键环境不要加入--volumes盲目清理。

编辑说明:测试与更正方法 · 编辑规范 · 联盟关系披露