
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本镜像提供的脚本可搜索Docker Registry并删除所有无标签关联的manifest,删除操作通过Docker Registry API执行,安全性较高。执行脚本后,需在registry中进行垃圾回收以释放磁盘空间。
Docker镜像可通过image:tag或image@digest拉取。若用不同镜像覆盖image:tag(如 nightly 版本推送到whateverimage:latest),旧版本仍可通过image@digest拉取,导致registry垃圾回收无法删除这些镜像(因存在引用)。
并非bug,部分用户使用image@digest确保拉取正确镜像(如Docker DAB文件)。Docker官方正在开发快速查找这些“隐藏”manifest的API端点(相关issue:https://github.com/docker/distribution/issues/2170%E3%80%81https://github.com/docker/distribution/pull/2169%EF%BC%89%EF%BC%8C%E5%90%8C%E6%97%B6%E4%B9%9F%E6%9C%89%E5%85%B3%E4%BA%8E%E6%98%BE%E5%BC%8F%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6%E6%97%A0%E6%A0%87%E7%AD%BEmanifest%E7%9A%84%E5%8A%9F%E8%83%BD%E8%AF%B7%E6%B1%82%EF%BC%88https://github.com/docker/distribution/issues/1844%EF%BC%89%E3%80%82%E6%9C%AC%E5%B7%A5%E5%85%B7%E6%98%AF%E5%AE%98%E6%96%B9%E5%B7%A5%E5%85%B7%E5%AE%8C%E5%96%84%E5%89%8D%E7%9A%84%E4%B8%B4%E6%97%B6%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E3%80%82
需先在registry配置中启用删除功能(参考https://docs.docker.com/registry/configuration/#delete%EF%BC%89%EF%BC%8C%E6%89%A7%E8%A1%8C%E8%84%9A%E6%9C%AC%E5%90%8E%E9%9C%80%E8%BF%9B%E8%A1%8C%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6%E3%80%82
| 变量名称 | 是否必填 | 描述 | 示例 |
|---|---|---|---|
| REGISTRY_URL | 是 | registry的URL | http://example.com:5000/ |
| REGISTRY_DIR | 否 | registry目录路径(若使用容器并挂载到/registry则无需填写) | /registry |
| SELF_SIGNED_CERT | 否 | 若使用自签名证书则设置为true | true |
| REGISTRY_AUTH | 否 | HTTP基本认证的用户名和密码(格式:username:password) | myuser:sickpassword |
| DRY_RUN | 否 | 启用Dry Run模式(仅展示操作,不删除) | true |
本地存储示例
最简单方式:
docker run -it -v /home/someuser/registry:/registry -e REGISTRY_URL=http://192.168.77.88:5000 docker.xuanyuan.run/mortensrasmussen/docker-registry-manifest-cleanup
测试模式(不修改registry):
docker run -it -v /home/someuser/registry:/registry -e REGISTRY_URL=http://192.168.77.88:5000 -e DRY_RUN="true" docker.xuanyuan.run/mortensrasmussen/docker-registry-manifest-cleanup
带更多选项:
docker run -it -v /home/someuser/registry:/registry -e REGISTRY_URL=http://192.168.77.88:5000 -e SELF_SIGNED_CERT="true" -e REGISTRY_AUTH="myuser:sickpassword" docker.xuanyuan.run/mortensrasmussen/docker-registry-manifest-cleanup
执行脚本后需进行垃圾回收。
| 变量名称 | 是否必填 | 描述 | 示例 |
|---|---|---|---|
| REGISTRY_STORAGE | 是 | 指定存储类型为S3 | S3 |
| REGISTRY_URL | 是 | registry的URL | http://example.com:5000/ |
| ACCESS_KEY | 是 | S3访问密钥 | XXXXXXGZMXXXXQMAGXXX |
| SECRET_KEY | 是 | S3秘密密钥 | zfXXXXXEbq/JX++XXXAa/Z+ZCXXXXypfOXXXXC/X |
| BUCKET | 是 | S3桶名称 | registry-bucket-1 |
| REGION | 是 | 桶所在区域 | eu-central-1 |
| REGISTRY_DIR | 否 | registry在桶中的路径(若在根目录则无需填写) | /path/to/registry |
| SELF_SIGNED_CERT | 否 | 若使用自签名证书则设置为true | true |
| REGISTRY_AUTH | 否 | HTTP基本认证的用户名和密码 | myuser:sickpassword |
| DRY_RUN | 否 | 启用Dry Run模式 | true |
S3存储示例
最简单方式:
docker run -it -e REGISTRY_URL=http://192.168.77.88:5000 -e REGISTRY_STORAGE="S3" -e ACCESS_KEY="XXXXXXGZMXXXXQMAGXXX" -e SECRET_KEY="zfXXXXXEbq/JX++XXXAa/Z+ZCXXXXypfOXXXXC/X" -e BUCKET="registry-bucket-1" -e REGION="eu-central-1" docker.xuanyuan.run/mortensrasmussen/docker-registry-manifest-cleanup
测试模式:
docker run -it -e DRY_RUN="true" -e REGISTRY_URL=http://192.168.77.88:5000 -e REGISTRY_STORAGE="S3" -e ACCESS_KEY="XXXXXXGZMXXXXQMAGXXX" -e SECRET_KEY="zfXXXXXEbq/JX++XXXAa/Z+ZCXXXXypfOXXXXC/X" -e BUCKET="registry-bucket-1" -e REGION="eu-central-1" docker.xuanyuan.run/mortensrasmussen/docker-registry-manifest-cleanup
带更多选项:
docker run -it -e REGISTRY_URL=http://192.168.77.88:5000 -e REGISTRY_STORAGE="S3" -e ACCESS_KEY="XXXXXXGZMXXXXQMAGXXX" -e SECRET_KEY="zfXXXXXEbq/JX++XXXAa/Z+ZCXXXXypfOXXXXC/X" -e BUCKET="registry-bucket-1" -e REGION="eu-central-1" -e SELF_SIGNED_CERT="true" -e REGISTRY_AUTH="myuser:sickpassword" docker.xuanyuan.run/mortensrasmussen/docker-registry-manifest-cleanup
运行方式与上述一致,需确保提供的user:pass拥有所有仓库/项目的完全访问权限(以便删除manifest)。针对Harbor,建议使用所有项目的管理员用户;执行完成后,可通过Harbor UI进行垃圾回收。本工具已在Harbor 1.7.0版本测试通过。
本项目基于Apache License, Version 2.0分发。
版权所有 © 2018 Morten Steen Rasmussen
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务