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

垃圾回收参考:官网说明

相关推荐
头孢头孢3 天前
k8s常用总结
运维·后端·k8s
Ares-Wang5 天前
kubernetes》》k8s》》 kubeadm、kubectl、kubelet
k8s
Yang三少喜欢撸铁6 天前
【10分钟掌握Docker、k8s的基础命令】
运维·docker·容器·kubernetes·k8s
花千树-0108 天前
利用 Patroni + etcd + HAProxy 搭建高可用 PostgreSQL 集群
数据库·docker·postgresql·k8s·etcd
Moshow郑锴11 天前
Kubenetes Service的类型(ClusterIP/NodePort/LoadBalancer/ExternalName)以及使用场景
容器·kubernetes·k8s·service·nodeport·loadbalancer
天草二十六_简村人12 天前
微信小程序的业务域名配置(通过ingress网关的注解)
后端·微服务·微信小程序·小程序·k8s·kong
CloudPilotAI13 天前
kOps + Karpenter 集成实践:实现 K8s 集群的动态扩展
云原生·kubernetes·k8s
郁大锤15 天前
Docker Compose 和 Kubernetes(K8s)对比
docker·容器·kubernetes·k8s
Yee_mo18 天前
helm部署metricbeat
elasticsearch·kubernetes·k8s·运维开发·devops
dblens 数据库管理和开发工具18 天前
基于k3s部署Nginx、MySQL、PHP和Redis的详细教程
k8s