舒服,删了 NAS 130G垃圾!又能下电影了!极空间部署PruneMate

2025-12-29 16:22:12 19点赞 80收藏 5评论

极空间最近终于优化了 Docker 应用,在容器编辑、镜像更新上增加了一些功能,大致如下:

1️⃣ 编辑后新建容器 —— 主要场景针对的是复制现有容器配置到新容器,比如 Jellyfin 到 Emby 保留端口和影片路径,只修改镜像。

2️⃣无损编辑 —— 对应的是修改当前容器的少部分配置,页面逻辑上不再和以前一样需要复制再删除,现在对使用者来说是无感的了。

舒服,删了 NAS 130G垃圾!又能下电影了!极空间部署PruneMate

3️⃣镜像更新 —— 现在支持手动更新单个容器镜像,如果是 Compose 部署的,则还是可以使用 Compose 拉新镜像去更新。

舒服,删了 NAS 130G垃圾!又能下电影了!极空间部署PruneMate

但是对于我这个 docker 的重度用户来说,这些界面的更新还不能满足我的“大胃口”,尤其是在空悬镜像管理、容器卷管理上,目前极空间前端页面还是空白,需要官方进一步优化。

很多人可能对 docker 的空悬镜像和容器卷不是很了解,所以今天趁着极空间更新 docker 这个引子,我把这两块给大家做个详细介绍,也顺便给大家提供一套管理的工具,可以帮助我们清理极空间里被 docker 占用的空间。

温馨提示:任何清理类指令都有可能删除你的数据,你需要明确知晓空悬镜像、容器卷的意义,以及你这样操作会导致的后果,否则不建议你一键清除!

什么是空悬镜像?

空悬镜像,本质上就是 image:tag 为 的镜像,它在极空间镜像里表现为sha256:xxx这样的 image 长编码模式。

舒服,删了 NAS 130G垃圾!又能下电影了!极空间部署PruneMate

什么是容器卷?

我们平时使用的-v /极空间路径:/app 这样的属于 bind 挂载,将容器存储挂载到文件目录里。

而docker volume 是将容器存储挂载到专门的容器卷里,它的优势是不存在权限问题,而且无需准备挂载文件。

在极空间里的路径为/data_s004/data/udata/real/zdocker/volumes/卷名/_data,属于页面无法管理,清理不干净又占用空间的东西。

舒服,删了 NAS 130G垃圾!又能下电影了!极空间部署PruneMate

为什么会是它们占用了 NAS 空间?

登录极空间 SSH 后台,我们使用 docker system df 来看一下 docker 的存储空间构成。

大头部分其实就是容器镜像,占据了 174.2GB 空间,容器卷占据了 2GB,然后容器本身只占据 1.7GB 空间。

舒服,删了 NAS 130G垃圾!又能下电影了!极空间部署PruneMate

使用指令docker system df -v来看某一部分的具体构成,可以看到大头的镜像里,有很多标签为的空悬镜像。

舒服,删了 NAS 130G垃圾!又能下电影了!极空间部署PruneMate

我统计了一下它们所占用的空间,指令docker images --filter "dangling=true" --format "{{.ID}} {{.Size}}" 查询镜像id 和镜像存储。

表格拉出来统计了一下,大概共有 82个 空悬镜像,占用 NAS 空间约 105 GB。

舒服,删了 NAS 130G垃圾!又能下电影了!极空间部署PruneMate

极空间部署 prunemate

为了解决这些空悬镜像,以及未使用的镜像、存储卷,最好的方法就是一个个通过删,精准但是耗时耗力。

其次就是通过docker volume/image prune批量删除,一次性解决,但是需要定期去执行。

不过我最近发现一款可以定时执行prune任务的应用 —— prunemate,它不仅可以定时清理本机的空闲 docker 资源,更是远程管理其它 NAS 上的 docker 空闲资源,真正实现了 docker 数据清理的快捷、方便。

打开 docker - compose 页面,将下方的 yaml 代码复制到黑框内,然后替换代码中的【路径】字符。

舒服,删了 NAS 130G垃圾!又能下电影了!极空间部署PruneMate

🔻yaml代码

services: prunemate: image: anoniemerd/prunemate:latest container_name: prunemate user: '0:0' ports: - "7676:8080" volumes: - /var/run/docker.sock:/var/run/docker.sock - 路径/logs:/var/log - 路径/config:/config environment: - PRUNEMATE_TZ=Asia/Shanghai - PRUNEMATE_TIME_24H=true restart: unless-stopped

路径替换方法,点击黑框上面的路径查询,然后找到你想配置存储的位置,点击复制路径即可。

舒服,删了 NAS 130G垃圾!又能下电影了!极空间部署PruneMate

容器部署完成以后,切换到容器标签页,点击容器右侧的远程访问按钮,随时随地都可以访问家中极空间的容器页面,便捷度100hun

舒服,删了 NAS 130G垃圾!又能下电影了!极空间部署PruneMate

项目的整体页面十分简单,最上方是历史清理的数据记录,包括了存储空间、清理次数、清理容器数、清理镜像数、清理网络数、清理卷数。

舒服,删了 NAS 130G垃圾!又能下电影了!极空间部署PruneMate

中间是 Corn 规则,默认的是每天凌晨 3点清理,支持每日、每周、每月等常用 Cron 规则,一般建议每周清理一次就够了,常清常新

舒服,删了 NAS 130G垃圾!又能下电影了!极空间部署PruneMate

第三块区域是清理内容,包括容器(未运行的)、镜像、网络、卷。一般建议大家开镜像和卷就行了。

舒服,删了 NAS 130G垃圾!又能下电影了!极空间部署PruneMate

第四块区域是管理外部 Docker 主机的,需要使用docker-socket-proxy将外部主机的 docker 2375 TCP 端口映射后才能用,一般不需要开。

舒服,删了 NAS 130G垃圾!又能下电影了!极空间部署PruneMate

最后一个区域是通知管理,目前支持 gotify 和ntfy 两种通知方式,如果不需要的,也可以通过极空间的容器页面去看日志了解清理状态。

舒服,删了 NAS 130G垃圾!又能下电影了!极空间部署PruneMate

部署完容器以后,我直接运行了一次清理工作,给我清理了 377 个镜像,以及 131.1 GB 空间。这里的 377 个镜像,应该指的是 image 的 377 层,而不是实际镜像数量,无视即可。有的时候镜像数据也会不准,毕竟项目还比较新,统计上可能有问题。

舒服,删了 NAS 130G垃圾!又能下电影了!极空间部署PruneMate

再次使用docker system df去查看 docker 占用空间,可以看到镜像已经从 174.2GB 降低到了 43.15GB,这样就省出来 130GB 空间,又能存下 5、6 部 4K原盘!

舒服,删了 NAS 130G垃圾!又能下电影了!极空间部署PruneMate

总结

通过 prunemate 的部署,极空间用户可以更轻松的清理长期被 docker 占用的额外存储,释放更多资源来给其它场景使用。

希望后续极空间可以加大 docker 应用上的细节优化,增加如检索、排序、空悬镜像清理、存储卷管理等功能,增加用户对 docker 的管理能力。

温馨提示:任何清理类指令都有可能删除你的数据,你需要明确知晓空悬镜像、容器卷的意义,以及你这样操作会导致的后果,否则不建议你一键清除!

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
5评论

  • 精彩
  • 最新
  • 所以这是个啥玩意。。。。

    校验提示文案

    提交
  • docker system prune -a

    校验提示文案

    提交
  • 性价比高

    校验提示文案

    提交
  • 这个可以

    校验提示文案

    提交
  • 以下是被折叠的评论 查看
已折叠部分评论
展开
收起
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
80
扫一下,分享更方便,购买更轻松