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 或设置定时任务

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

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

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

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

相关推荐
用户0328472220708 小时前
如何搭建本地yum源(上)
运维
武子康9 小时前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工3 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Alsn863 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
酣大智3 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_3 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉3 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造