部署
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和日志增长设置告警,同时修复应用异常刷日志的根因。
把配置变成可验证的部署
总成本由服务器、备份、域名、日志存储和维护时间组成。容器数量不能直接换算成配置,应记录峰值资源。
- 列出容器、数据库、缓存和定时任务。
- 部署后用 docker stats、free 和 df 建立基线。
- 模拟升级、重启和磁盘增长。
- 把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盲目清理。