在 docker-compose.yml 中通过 logging.driver 配置 json-file 驱动的 max-size 和 max-file 参数可限制单个微服务日志大小,如 max-size: "10m"、max-file: "3",实现日志轮转与清理。

在 docker-compose.yml 中限制单个微服务的日志文件大小,核心是配置容器的 logging driver 选项,尤其是 json-file 驱动下的 max-size 和 max-file 参数。Docker 默认使用 json-file 日志驱动,它支持按大小轮转日志,避免日志无限增长。
配置 service 级别的 logging 选项
在对应服务的定义下添加 logging 配置块,指定日志大小上限和保留数量:
services:
api:
image: myapp:latest
logging:
driver: "json-file"
options:
max-size: "10m" # 单个日志文件最大 10MB
max-file: "3" # 最多保留 3 个历史日志文件(含当前)
这样,该服务容器产生的 /var/lib/docker/containers/<id>/<id>-json.log 文件会在达到 10MB 时自动切割,并最多保留 3 个(如 xxx-json.log.1、.2、.3),超出的旧日志会被删除。
使用 Python 脚本下载 Docker 镜像并打包为 tar 文件。用户说“下载镜像”“拉取镜像”“pull xxx”“帮我下载 nginx 镜像”等时触发。支持 SOCKS5 代理直连(推荐)和国内镜像站加速两种模式。
注意日志路径和实际存储位置
Docker 容器日志由宿主机上的 Docker daemon 管理,不是写在容器内部,所以:
- 配置生效后,日志仍存于宿主机
/var/lib/docker/containers/.../xxx-json.log - 容器内执行
ls /var/log或df -h看不到这些日志占用空间 - 真正影响磁盘的是宿主机的
/var/lib/docker分区
验证配置是否生效
启动服务后,可检查容器的实际日志配置:
docker inspect <container_name_or_id> | grep -A 5 "LogConfig"
输出中应包含类似:
"LogConfig": {
"Type": "json-file",
"Config": {
"max-file": "3",
"max-size": "10m"
}
}
其他实用建议
- 若服务本身也输出大量日志到文件(如 Spring Boot 的
logs/app.log),需在应用层配置日志框架(Logback/Log4j)做轮转,Docker 的logging配置不作用于容器内自建日志文件 - 生产环境建议统一设置,避免个别服务打爆磁盘;可在
docker-compose.yml的x-logging自定义片段中复用配置 - 不推荐改用
local驱动来“节省空间”,它虽更高效但参数名不同(max-size→max-file-size),且部分旧版 Docker 不支持

















