You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何清理Sonatype Nexus Docker Registry中的老旧/未使用镜像?

解决Sonatype Nexus Docker Registry清理任务无效的问题

我之前也碰到过Nexus Docker仓库越用越大、自带清理任务完全没效果的糟心事,折腾了好一阵才找到症结,给你分享几个实用的排查和解决步骤:

  • 先核对清理任务的配置细节
    很多时候任务没起效,根本原因是规则没覆盖到要清理的镜像:

    • 确认任务的Repository Target是不是准确选中了你的Docker仓库,别不小心选成maven或者其他类型的仓库了
    • 检查“Unused”的时间阈值设置——默认是按最后拉取/推送时间判定的,如果设得太长(比如30天),但你的旧镜像才存了10天,那肯定不会被清理
    • 一定要勾选**"Remove manifests that have no tags"**选项!CI构建经常会生成无标签的镜像(只推送了manifest没打tag),这些“无头”镜像默认不会被清理,勾上这个才能把它们删掉
  • 注意Docker镜像的分层特性,别被“假占用”骗了
    Nexus里的Docker镜像是分层存储的,不同镜像会共享相同的层。哪怕你删了某个镜像,只要还有其他镜像在依赖它的分层,那这个分层的Blob文件就不会被删除。所以你看到空间没下降,可能是还有其他镜像在占用这些分层:

    1. 先手动清理仓库里确定没用的旧项目镜像(包括所有关联的tag)
    2. 执行完清理任务后,必须去Blob Store里运行**"Compact Blob Store"**任务——这个步骤才会真正删除那些没有任何引用的孤立Blob,释放出实际的存储空间
  • 强制触发完整清理流程
    如果自动任务一直没效果,可以手动走一遍完整的清理流程:

    1. 先暂停你的Docker仓库(避免清理过程中有新的镜像推送干扰)
    2. 手动运行**"Purge unused docker manifests and images"**任务,确保选对目标仓库和合适的时间阈值
    3. 运行**"Compact Blob Store"**任务,选择对应Docker仓库的Blob存储
    4. 最后重启Nexus服务(有时候缓存会导致后台空间统计没及时更新)
  • 长期预防的小建议

    • 在CI流程里加个步骤:每次推送新镜像后,自动删除该项目的旧镜像(比如只保留最近3个版本),从源头减少垃圾堆积
    • 给Docker仓库设置**"Tag Retention Policy"**,自动清理超过指定数量的tag,避免tag越积越多
    • 定期手动检查Blob存储的占用情况,别完全依赖自动清理任务

内容的提问来源于stack exchange,提问作者Matej Žerovnik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:09:08