Azure Container Registry (ACR) 是私人登錄服務,可用來建置、儲存和管理容器映像和相關成品。 若要維護登錄的健康情況並降低儲存成本,您可以視需要刪除映像、成品和存放庫。
本文可協助您針對刪除映像、成品或存放庫時發生的一些問題進行疑難解答。
問題 1:無法刪除空白存放庫
當您嘗試從容器登入中移除空白存放庫時,會產生類似下列訊息的錯誤訊息:
使用 Azure 入口網站 時發生錯誤:
{'code':'NAME_UNKNOWN','message':'repository name not known to registry','detail':{'name':'mailhog'}}
使用 Azure CLI 時發生錯誤:
2024-05-08 12:14:04.261355 錯誤:登錄不知道存放庫名稱。 相互關聯標識碼:aaaa0000-bb11-2222-33cc-44444dddd
之所以發生此錯誤,是因為一開始刪除影像時,會留下一些孤立的元數據。 若要避免此錯誤,請勿清空存放庫。 請改為刪除整個存放庫。 此程式更有效率,因為它會刪除存放庫中的所有映像,包括所有標籤、唯一層和指令清單。
在存放庫之前新增虛擬映像。
問題 2:無法刪除與私人端點相關聯的容器登錄
如果 Azure 容器登錄與私人端點相關聯,則刪除容器登錄會失敗。 您必須先移除與其相關聯的所有私人端點,才能將其刪除。 若要這樣做,請使用 Azure 入口網站 或 az acr private-endpoint-connection delete 命令。 如需詳細資訊,請參閱管理私人端點連線。
問題 3:刪除作業無法清除已使用記憶體
當您在 ACR 工作中執行 acr purge 命令以刪除許多映像時,記憶體使用量不會減少。
在 ACR 中,每個映像都有其對應的唯一指令清單和指令清單摘要。 不過,不同的映像可能會共用相同的圖層。 如需範例,請參閱下列螢幕擷取畫面。
為了節省 ACR 中的儲存空間,多個不同指令清單所參考的層次只會儲存一次。
根據上述螢幕快照,如果您刪除影像 B,則會清除指令清單和指令清單摘要。 在圖層層級,只會刪除第 4 層,而第 1 層和第 2 層會保留在 ACR 記憶體中,因為另一個指令清單仍會參考它們。 因此,記憶體縮減將會小於預期。
問題 4:刪除 ACR 存放庫時不允許作業發生錯誤
當您嘗試移除 ACR 存放庫時,會收到下列錯誤訊息:
The operation is disallowed on this registry, repository or image.
原因
發生此錯誤的原因是您的存放庫、指令清單或映像層上存在鎖定。 使用下列命令來檢查鎖定。
注意
在下列命令中,您必須取代 、--name、 --registry和 --repository 參數的值--image。
檢查存放庫層級是否有任何鎖定。
az acr repository show --name myregistry --repository myrepo檢查存放函式庫指令清單摘要層級的鎖定:
az acr manifest list-metadata -registry myregistry -name myrepo檢查存放庫映像標記層級的鎖定:
az acr repository show --name myregistry --image imagename:tag
輸出範例:
{
"changeableAttributes": {
"deleteEnabled": false,
"listEnabled": true,
"readEnabled": true,
"writeEnabled": false
},
"createdTime": "2024-08-20T15:22:51.0355721Z",
"imageName": "myImage_0a1c809cc2eb596028fcf7a68e498e09",
"lastUpdateTime": "2024-08-20T15:23:01.2739647Z",
"manifestCount": 1,
"registry": "myACR.azurecr.io",
"tagCount": 2
}
writeEnabled如果屬性設定為 false,這表示存放庫或映像已鎖定,以防止刪除作業。
解決方案
若要解決此問題,請使用下列命令將 變更 writeEnabled 為 true:
移除存放庫層級的鎖定:
az acr repository update --name myregistry --repository myrepo --write-enabled true移除指令清單層級的鎖定:
az acr repository update --name myregistry --image myrepo@sha256:123456abcdefg --write-enabled true移除映射標籤層級的鎖定:
az acr repository update --name myregistry --image hello-world:latest --write-enabled true
與我們連絡,以取得說明
如果您有疑問,可以詢問 Azure 社群支援。 您也可以向 Azure 意見反應社群提交產品意見反應。