logo头像

Edward.K Thinking

真正刪除Azure Container Registry內的Image檔案


先前有一篇寫如何透過Power Shell去刪除Azure Container Registry上面的Image Tag (快速刪除Azure Container Registry內的Image Tag),以方便管理私有的Container。不過,這樣刪除有一個問題就是無法真正把Azure Container Registry的空間給釋放出來,如果你是用最基本的計費方式,只會有10G空間可以擺放Image,但是當你發現你實際沒有這樣多image時候,空間還是被耗用。所以,除了移除Tag外,還必須實際上把實體的image給刪除,才可以真正的釋放出空間來


主要原因是在於,在Azure Container Registry會看到只有Tag Name不等於Null的image,如果想要知道這個image,有哪些digest,可以透過下面指令查出來

1
az acr repository show-manifests --name ACRName --repository repositoryName  --query "[?tags==null].digest"

還有另一種看法就是看該image的資訊清單數量標籤是否相同,基本上若是沒意外,因該是會相同的,還有一種情況會造成差異,就是有差異性的image,但是用的標籤是相同的,就會發生這問題。例如都是latest,就像下圖一樣



既然可以透過指令把該image的digest的資訊顯示出來,因此,我們要移除舊就是這些列出來的digest資訊。這樣才有辦法真正把image刪除,不過,再刪除digest前,必須確認這些digest所對應的Tag已經是Null了

其指令如下:

1
2
3
4
5
$registry = ACR Name
$repository = repository Name

az acr repository show-manifests --name $registry --repository $repository --query "[?tags==null].digest" -o tsv `
| %{ az acr repository delete --name $registry --image $repository@$_ --yes }

就會找出tag等於Null的image,並且刪除它。使用的powershell前,必須確定自己電腦已經有安裝az指令集或是可以執行az

上一篇