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

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

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

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

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

相关推荐
手揽回忆怎么睡2 小时前
win11使用Docker隔离comfyui,避免每次python地狱依赖
docker
东北甜妹2 小时前
Redis 知识总结
运维·nginx·安全
牛奶咖啡132 小时前
Docker容器实践——docker的安装与加速器配置
docker·docker与虚拟机对比·docker是什么·docker容器的发展方向·docker容器的两种安装方法·docker配置国内加速器·普通用户添加docker用户组
小夏子_riotous2 小时前
Docker学习路径——1、简介
linux·运维·服务器·docker·容器·云计算
航Hang*3 小时前
Windows Server 配置与管理——第9章:配置DHCP服务器
运维·服务器·windows·学习
walkerLing3 小时前
Docker Day2
运维·docker·容器
乾元3 小时前
《硅基之盾》番外篇四:极客时刻——从零手搓一个 AI 自动化渗透智能体(附源码架构)
运维·网络·人工智能·安全·机器学习·架构·安全架构
驱动小百科3 小时前
如何连接共享打印机 4种方法一步到位
运维·服务器·共享打印机怎么连接·连接共享打印机方法·打印机共享设置·打印机连接教程
VBsemi-专注于MOSFET研发定制3 小时前
AI训练服务器GPU功率链路设计实战:效率、可靠性与功率密度的平衡之道
运维·服务器·人工智能