本文档提供了清理 FoomClous 项目 Docker 垃圾文件的详细指南。
# 1. 赋予脚本执行权限
chmod +x docker-cleanup.sh
# 2. 运行清理脚本
./docker-cleanup.sh
# ⚠️ 警告:这会删除所有未使用的容器、镜像、网络和卷
docker system prune -a --volumes -f
# 停止并删除 docker-compose 管理的容器
docker-compose down
# 删除所有停止的容器
docker container prune -f
# 查看所有镜像
docker images
# 删除未使用的镜像
docker image prune -a -f
# 删除特定镜像(可选)
docker rmi <镜像ID>
# 查看所有卷
docker volume ls
# 删除未使用的卷(⚠️ 会删除数据!)
docker volume prune -f
# 删除特定卷(可选)
docker volume rm <卷名>
# 查看所有网络
docker network ls
# 删除未使用的网络
docker network prune -f
# 删除所有构建缓存
docker builder prune -a -f
| 资源类型 | 说明 | 是否删除数据 |
|---|---|---|
| 容器 | 运行中的应用实例 | ❌ 否 |
| 镜像 | 构建的应用镜像 | ❌ 否 |
| 卷 | 持久化数据存储 | ⚠️ 是 |
| 网络 | 容器间通信网络 | ❌ 否 |
| 构建缓存 | Docker 构建时的缓存层 | ❌ 否 |
根据 docker-compose.yml,本项目使用以下卷:
file-storage: 存储上传的文件、缩略图和分块数据
/data/uploads - 上传的文件/data/thumbnails - 缩略图/data/chunks - 分块数据postgres-data: PostgreSQL 数据库数据
/var/lib/postgresql/data - 数据库文件⚠️ 警告:删除这些卷会导致所有上传的文件和数据库数据丢失!
在清理卷之前,请确保已备份重要数据:
# 备份数据库
docker-compose exec postgres pg_dump -U foomclous foomclous > backup.sql
# 备份文件存储(在宿主机上)
docker run --rm -v foomclous_file-storage:/data -v $(pwd):/backup alpine tar czf /backup/file-storage-backup.tar.gz /data
如果只想清理镜像和缓存,而不删除数据卷:
# 不使用 --volumes 参数
docker system prune -a -f
清理前后可以查看磁盘使用情况:
# 查看 Docker 磁盘使用
docker system df
# 详细信息
docker system df -v
清理后重新启动项目:
# 重新构建并启动
docker-compose up -d --build
# 或者只启动(如果镜像还在)
docker-compose up -d
A: 如果删除了镜像,需要重新构建:
docker-compose up -d --build
A: 如果误删了卷,只能从备份恢复:
# 恢复数据库
docker-compose exec -T postgres psql -U foomclous foomclous < backup.sql
# 恢复文件存储
docker run --rm -v foomclous_file-storage:/data -v $(pwd):/backup alpine tar xzf /backup/file-storage-backup.tar.gz -C /
A: 使用 docker-compose 命令:
# 停止并删除容器、网络(保留卷)
docker-compose down
# 停止并删除容器、网络、卷(⚠️ 删除数据)
docker-compose down -v
# 停止并删除容器、网络、卷、镜像
docker-compose down -v --rmi all
A: 按优先级清理:
# 1. 先清理构建缓存(通常占用最多)
docker builder prune -a -f
# 2. 清理未使用的镜像
docker image prune -a -f
# 3. 清理停止的容器
docker container prune -f
# 4. 最后考虑清理卷(会删除数据)
docker volume prune -f
定期检查 Docker 磁盘使用情况:
# 简单查看
docker system df
# 详细查看
docker system df -v
# 查看特定类型
docker images --format "table \t\t"
docker volume ls --format "table \t\t"
# 查看帮助
docker system --help
docker image --help
docker volume --help
docker container --help
# 查看详细信息
docker inspect <容器/镜像/卷>
# 实时监控
docker stats