Docker容器日志怎么限制大小避免占满磁盘?
我用 Docker 部署了一个前端应用,运行一段时间后发现 /var/lib/docker/containers 目录下的日志文件特别大,差点把磁盘撑爆了。之前试过在 docker run 时加 --log-opt max-size=10m,但好像没生效?
现在每次都要手动清空日志,太麻烦了。有没有办法全局配置或者在 docker-compose 里统一设置日志轮转?
version: '3'
services:
web:
image: my-frontend-app
ports:
- "80:80"
# 这里该怎么加日志限制?
在 docker-compose 里这样写就行:
解释一下这两个参数:max-size 是单个日志文件最大 10MB,超过就轮转;max-file 是保留几个轮转后的文件,超过会删最早的。这样一个容器最多占 40MB 左右,不会炸磁盘。
如果你想全局配置所有容器都默认生效,可以去修改 Docker daemon 的配置文件。Linux 上一般是 /etc/docker/daemon.json,加这么一段:
改完记得重启 Docker 服务:systemctl restart docker。注意这个是全局配置,新启动的容器会生效,已经在跑的要重启才行。
还有一点提醒,如果你用的是其他日志驱动比如 journald 或者 syslog,那 max-size 这些选项是不管用的,得换回 json-file 或者在对应驱动那边配置。