必须立即限制 docker 容器日志体积:先用命令定位日志大户,再通过 docker engine 配置全局日志上限(max-size=20m, max-file=3),或在 docker-compose.yml 中为单容器配置 logging;若磁盘已满,需执行 clean / purge data 紧急清理。

Mac 上 Docker 容器日志默认无限追加,单个容器日志可轻松突破 20GB,而 Docker Desktop for Mac 的 LinuxKit VM 磁盘空间有限(通常默认 64GB),日志撑爆 VM 磁盘后会导致所有容器卡死、Docker Desktop 崩溃、甚至 macOS 整体变卡。必须立即限制日志体积。
查出当前哪些容器在疯狂写日志
先定位“日志大户”,避免盲目操作:
打开终端,运行:docker ps -q | xargs -I {} sh -c 'echo "=== {} ==="; docker inspect --format="{{.LogPath}}" {} 2>/dev/null | xargs stat -f "%z %N" 2>/dev/null | awk "{print \$1/1048576 \" MB\"}"'
这条命令会逐个检查每个运行中容器的日志文件大小,单位为 MB。若某容器日志显示 “12800 MB”,说明已占 12.5GB,必须优先处理。
注意:Docker Desktop for Mac 的日志文件实际存储在 LinuxKit VM 内部,你无法直接访问 /var/lib/docker/containers/ 路径——该路径在宿主 macOS 上不可见,所有操作必须通过 Docker 命令或配置生效。
全局限制:让所有新建容器自动遵守日志上限
这是最稳妥的长期方案,适用于 Docker Desktop for Mac 4.10+(2023 年后版本):
第一步:打开 Docker Desktop → ⚙️ Settings → Docker Engine
第二步:在右侧 JSON 配置框中,插入或修改 "log-driver" 和 "log-opts" 字段,确保整个配置形如:
{<br> "log-driver": "json-file",<br> "log-opts": {<br> "max-size": "20m",<br> "max-file": "3"<br> }<br>}
第三步:点击右下角 Apply & Restart。Docker Desktop 将自动重启 LinuxKit VM 并加载新配置。
✅ 新建的容器(包括 docker run、docker-compose up 启动的)将严格遵循此规则:每个日志文件最大 20MB,最多保留 3 个轮转文件,超出即自动删除最旧的。旧容器不受影响,需重建才生效。
单容器临时限制:对已有关键容器立即生效
方法一:用 docker run 重跑(适合调试或测试容器)
添加 --log-opt max-size=10m --log-opt max-file=2 参数即可:docker run -d --log-opt max-size=10m --log-opt max-file=2 --name nginx-test nginx
方法二:修改 docker-compose.yml(推荐用于生产服务)
在对应 service 下添加 logging 配置块:
services:<br> api:<br> image: my-api:latest<br> logging:<br> driver: json-file<br> options:<br> max-size: "15m"<br> max-file: "3"
保存后执行 docker-compose up -d --force-recreate,旧容器被销毁重建,新日志策略立刻接管。
⚠️ 注意:Docker Desktop for Mac 不支持 docker update 修改正在运行容器的日志配置,必须重建。
紧急清理:释放已被占满的 VM 磁盘空间
如果 Docker Desktop 已弹出 “Disk image is full” 提示,或容器全部停止响应,说明 VM 磁盘已满,需立刻清空日志:
打开 Docker Desktop → ⚙️ Settings → Resources → Disk image size → 点击下方 “Clean / Purge data” 按钮。
这个操作会:
• 删除所有容器、镜像、构建缓存
• 清空所有容器日志文件
• 重置 LinuxKit VM 磁盘为初始状态
【这一步不可逆,所有本地未推送的镜像和未备份的卷数据将永久丢失】
完成后重启 Docker Desktop,再立即按上文配置全局日志限制,防止再次爆盘。











