registry镜像仓库通过HTTP API删除镜像

registry组件提供了HTTP的接口,可以参考:官网API说明

删除思路:

镜像由多个layers层组成,DELETE /v2/<name>/blobs/<digest>可以用来删除一个单独的层,但是我们的目的不是要删除层。

我们用DELETE /v2/<name>/manifests/<reference> 删除整个镜像的清单,清单被删除后,再由registry的垃圾回收来清理物理的存储。<name>为仓库名称,<reference>为查询镜像时(GET /v2/<name>/manifests/<reference>)返回的Header中的Docker-Content-Digest的值。

示例:

目标:调用registry的HTTP API删除localhost:5000/amq:3.0这个镜像

1、查询镜像

shell 复制代码
curl --location '127.0.0.1:5000/v2/amq/manifests/3.0' \
--header 'Accept: application/vnd.docker.distribution.manifest.v2+json'

Header返回了Docker-Content-Digest为:sha256:7b9398d6cedb81f8cf7cb30c83f64ee4fd8eb1c301ed1f28951f114fa03255c0

2、删除镜像清单

shell 复制代码
curl --location --request DELETE '127.0.0.1:5000/v2/amq/manifests/sha256:7b9398d6cedb81f8cf7cb30c83f64ee4fd8eb1c301ed1f28951f114fa03255c0'

3、手动触发垃圾回收,清理物理内存

用docker exec进入registry容器执行命令

shell 复制代码
docker exec -it registry /bin/sh
shell 复制代码
/bin/registry garbage-collect /etc/docker/registry/config.yml

垃圾回收参考:官网说明

相关推荐
java_cj2 天前
从kubectl学Visitor模式:如何优雅处理多态数据结构的遍历
云原生·golang·k8s·访问者模式
java_cj3 天前
从kubectl源码学Cobra:打造专业级Go命令行工具的完整实践
运维·开发语言·后端·云原生·golang·kubernetes·k8s
逻极4 天前
Kubernetes 从入门到精通:云原生容器编排
kubernetes·k8s·服务发现·容器编排
阿洛学长5 天前
Kubernetes超详细教程,从零开始学习k8s,从入门到实战
k8s·ks
武子康7 天前
调查研究-167 Docker Compose 详解:从单容器到多服务编排的工程化入口
运维·docker·云原生·容器·kubernetes·k8s·docker-compose
qq_2320455721 天前
在wsl中安装k8s
minikube·k8s
网宿安全演武实验室22 天前
当AI跑进容器:全链路容器安全检测与智能运营实
人工智能·安全·容器·k8s
万里侯25 天前
Kubernetes Operator模式:自动化运维的高级实践
微服务·容器·k8s
万里侯25 天前
Kubernetes多租户管理:实现资源隔离与安全的完整指南
微服务·容器·k8s
万里侯25 天前
云原生数据库管理:在Kubernetes上运行数据库的完整指南
微服务·容器·k8s