Docker 运行一段时间后,/var/lib/docker/overlay2目录占用空间过大的处理方案

Docker 运行一段时间后,/var/lib/docker/overlay2(或 overlay)目录占用空间过大是一个常见问题。这通常由以下原因导致:

  1. 镜像层累积:拉取新镜像时旧镜像未被清理

  2. 构建缓存:Dockerfile 构建产生的中间层

  3. 停止的容器:已停止但未删除的容器占用层

  4. 卷(Volumes):未使用的数据卷

  5. 日志文件:容器日志无限增长

1. 快速清理命令(推荐)

bash

复制

复制代码
# 清理所有未使用的数据(容器、镜像、卷、网络、缓存)
docker system prune -a --volumes

# 仅清理未使用的镜像
docker image prune -a

# 仅清理已停止的容器
docker container prune

# 仅清理未使用的卷(谨慎使用)
docker volume prune

注意-a 会删除所有未使用的镜像,不仅仅是悬空镜像。

2. 查看空间占用详情

bash

复制

复制代码
# 查看 Docker 整体磁盘使用情况
docker system df -v

# 查看 overlay2 目录大小
du -sh /var/lib/docker/overlay2

# 查找大文件
du -h /var/lib/docker/overlay2 | sort -rh | head -20

3. 定位具体占用源

bash

复制

复制代码
# 查看哪些容器占用最多空间
docker ps -s

# 查看镜像大小排序
docker images --format "{{.Size}} {{.Repository}}:{{.Tag}}" | sort -hr

# 查找孤儿卷(无容器使用)
docker volume ls -f dangling=true

4. 针对性解决方案

清理特定镜像/容器

bash

复制

复制代码
# 删除特定镜像
docker rmi <image_id>

# 强制删除运行中的容器及其卷
docker rm -vf <container_id>

限制日志大小(治本)

编辑 /etc/docker/daemon.json

JSON

复制

复制代码
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

然后重启 Docker:sudo systemctl restart docker

清理构建缓存

bash

复制

复制代码
docker builder prune

5. 自动化清理脚本

可以添加到 crontab 定期执行:

bash

复制

复制代码
#!/bin/bash
# docker-cleanup.sh
docker system prune -af --volumes --filter "until=168h"  # 清理7天前的数据

6. 迁移 Docker 目录(空间不足时)

如果磁盘空间确实不足,可以迁移数据目录:

bash

复制

复制代码
# 停止 Docker
sudo systemctl stop docker

# 迁移数据
sudo rsync -avz /var/lib/docker/ /new/path/docker/

# 修改配置 /etc/docker/daemon.json
{
  "data-root": "/new/path/docker"
}

# 重启 Docker
sudo systemctl start docker

建议的清理顺序

  1. 先执行 docker system df 查看占用分布

  2. 先清理 已停止的容器:docker container prune

  3. 再清理 未使用的卷:docker volume prune(确认无重要数据)

  4. 最后清理 镜像:docker image prune -a

  5. 定期执行 docker system prune 或设置定时任务

重要提醒:执行清理前请确认:

  • 没有需要保留的已停止容器

  • 没有重要数据存储在要删除的卷中

  • 生产环境建议先在测试环境验证

相关推荐
炸炸鱼.17 分钟前
Kubernetes高级调度02:Taint/Toleration、Cordon/Drain、亲和性与反亲和性完全指南
云原生·容器·kubernetes
wanhengidc20 分钟前
服务器租用有何优点
运维·服务器·安全·web安全
ZGi.ai40 分钟前
人工审查节点:让自动化工作流多一步人工把关
运维·人工智能·自动化·人机协同·智能体工作流·人工审查
艾莉丝努力练剑1 小时前
【Linux:文件】Ext系列文件系统进阶
linux·运维·服务器·c++·文件系统·文件io·ext
海市公约1 小时前
Linux核心基础命令与权限管理实战指南
linux·运维·服务器·vim·权限管理·系统监控·命令行
wkd_0071 小时前
Ubuntu 22.04 Samba 连接故障排查记:从“用户名或密码错误”到 NTLM 版本不兼容
linux·运维·ubuntu
企服AI产品测评局1 小时前
Agent适配信创环境实测:企业级自动化如何实现国产操作系统与数据库全兼容?
运维·数据库·人工智能·ai·chatgpt·自动化
mixboot2 小时前
Linux 进程工作目录查看利器:pwdx 命令详解
linux·运维·服务器
盖小雅3 小时前
自动化排班如何破解劳动法合规难题:从规则冲突到可追溯的排班表
大数据·运维·机器学习·自动化
NiceCloud喜云3 小时前
Claude Code Routines 实战:三种触发器跑通云端自动化编码
android·运维·数据库·人工智能·自动化·json·飞书