首页 > 其他分享 >删除Azure Container Registry中tag为null的容器镜像

删除Azure Container Registry中tag为null的容器镜像

时间:2024-01-08 17:36:59浏览次数:40  
标签:容器 Container repository -- tag Registry 清单 镜像 null

删除Azure Container Registry中tag为null的容器镜像

近几年容器技术的蓬勃发展,越来越多的客户开始在Azure中使用AKS,ACR等容器相关的Azure服务,来满足其不断发展的业务使用需求。

但随着时间的推移和业务复杂性的增长,很多客户都会发现,ACR中的某些Repo内,显示的清单计数和实际的清单数量不一致的问题。一般出现这种问题的原因主要有一下几种:

  • 上传容器镜像时,没有规范的对容器镜像应用tag标签
  • 删除容器镜像时,没有规范的对容器镜像进行删除

其实所谓的清单计数和实际的清单数量不一致,就意味着我们在ACR中,存在某些tag为null的容器镜像,这些tag为null的容器镜像,会计算在ACR的清单计数中,但是我们实际上却无法看到。对于这种类型的容器镜像,我们该如何对其进行删除呢,感兴趣的小伙伴可以参考如下步骤。

首先,我们登录到Azure ACR,可以看到,我们所处的Repo内,清单计数为3,但实际看到的只有一个:

删除Azure Container Registry中tag为null的容器镜像_Azure

使用CLI进行查看,可以看到,在clock Repo内有两个tags为null的清单:

az acr repository show-manifests --name $acrName --repository $repoName --detail --query '[].{Size:imageSize, Tags:tags}'

删除Azure Container Registry中tag为null的容器镜像_Kubernetes_02

对于这两个Tags为null的清单,可以使用如下shell脚本进行删除清理:

#!/bin/sh
acrName="acrnulltest"
repoName="clock"
echo "Remove
null tag image from ${acrName}/${repoName}"
allImages=$(az acr
repository show-manifests -n ${acrName} --repository ${repoName} --query
"[?tags[0]==null].digest" -o tsv)
latestImage=$(az acr
repository show-manifests -n ${acrName} --repository ${repoName} --query
"[?tags[0]==latest].digest" -o tsv)
for id in
do
   
fullRepo=$repoName@$id
    az acr repository delete -n ${acrName} -t ${fullRepo} --yes
done

删除Azure Container Registry中tag为null的容器镜像_Container Regisitry_03

脚本执行完以后,再次查看clock Repo,可以看到只有一个清单:

删除Azure Container Registry中tag为null的容器镜像_Container_04

同样,在GUI界面下,清单计数也变为了1:

删除Azure Container Registry中tag为null的容器镜像_Azure_05

标签:容器,Container,repository,--,tag,Registry,清单,镜像,null
From: https://blog.51cto.com/wuyvzhang/9147527

相关文章

  • 使用 Docker Compose 部署 Docker Registry
    在内网环境中,我们期望能够在本地共享镜像。为了解决这一问题,DockerRegistry成为了我们的救星。DockerRegistry是一个用于存储和管理Docker镜像的开源工具。通过在本地部署DockerRegistry,您可以轻松地构建、存储和分享自己的Docker镜像。本文将详细介绍如何使用DockerCompose快......
  • wsl2 通过桥接实现 局域网访问,docker 远程连接执行testcontainer
    为了不想在本地安装docker运行testcontainer容器测试,需要wsl2的所有端口,局域网都可以访问,折腾了3天,最后在https://zhuanlan.zhihu.com/p/659074950这篇文章的指引下才实现 首先打开控制面板点击程序 点击启用或关闭Window功能   确保开启虚拟化然后打开......
  • Apple Logic Pro 10.7 (Logic Pro 10.7 + MainStage 3.5 (Universal))
    作者:gc,主页:www.sysin.orgLogicPro本领先声夺人,创意一鸣惊人。使用实时循环乐段,以全新方式进行音乐创作和即兴演奏。借助采样器和快速采样器将声音转化为乐器。通过步进音序器来快速制作鼓点节拍和旋律模式。利用LogicRemote在iPad或iPhone上掌控乐曲的创作。LogicProMai......
  • Git的GPG签名 —— Tag签名 Verified验证,防伪造的gitee/github commit验证
    相关资料:如何使用git通过ssh协议拉取gitee上的项目代码——如何正确的免密使用git不论是gitee还是GitHub都有两种公钥设置,一种是ssh公钥,另一种则是GPG公钥。ssh公钥是为了在进行gitpull和gitpush操作时进行免密验证的;而GPG公钥是在gittag和gitcommit时进行验证的。不过需......
  • 1-1-03 XILINX JTAG开发工具usb-jtag驱动安装
    1.1概述    一般安装vitis(vivado)的过程中勾选了安装jtagcable驱动就会默认安装好jtag驱动,但是如果vivado无法正确识别到JTAG,那么可以试下重新手动安装驱动1.2准备工作安装驱动前,必须关闭所有的vivado,vitis-sdk并且拔掉USBJTAG以免导致安装失败1.3usb-jtag驱动安装......
  • Asp.net WebApi Swagger Tag 标记分组归纳显示Api接口路由
    官方文档说明地址https://swagger.io/docs/specification/2-0/grouping-operations-with-tags/创建一个自定义的特性类publicclassControllerGroupAttribute:Attribute{publicControllerGroupAttribute(stringgroupName){if......
  • 无涯教程-Java NIO - DataGramChannel
    JavaNIO数据报用作通道,可以通过较少连接的协议发送和接收UDP数据包。默认情况下,数据报通道处于阻塞状态,也可以在非阻塞模式下使用。为了使其成为非阻塞状态,无涯教程可以使用configureBlocking(false)方法。可以通过调用名为open()的静态方法之一来打开DataGram通道,该方法也可......
  • Oracle 中 LISTAGG 函数的介绍以及使用
    LISTAGG函数介绍listagg函数是Oracle11.2推出的新特性。其主要功能类似于wmsys.wm_concat函数,即将数据分组后,把指定列的数据再通过指定符号合并。LISTAGG使用listagg函数有两个参数: 1、要合并的列名 2、自定义连接符号☆LISTAGG函数既是分析函数,也是聚......
  • 02 USB_JTAG驱动安装
    1概述一般安装vitis(vivado)的过程中勾选了安装JTAGcable驱动就会默认安装好JTAG驱动,但是如果vivado无法正确识别到JTAG,那么可以试下重新手动安装驱动2准备工作安装驱动前,必须关闭所有的vivado,vitis-sdk并且拔掉USBJTAG以免导致安装失败3USB_JTAG驱动安装找到vivado安......
  • Stable Diffusion(SD-Webui)tag快速提权(降权)
    StableDiffusion(SD-Webui)tag的快速提权|降权:很简单:  1.选中tag(只要光标在你分词里面就行)  2.CRTRL+上下方向键(向上默认提0.1,向下默认减.0.1,当权为1时候会帮你自动消掉括号)完事请注意:中文逗号默认会被视为tag一部分!判断中英文逗号最简单的办法是看有没有贴贴,俩遍都......