3

我将 docker 映像存储在 Azure 上的私有存储库中。每次我将具有相同标签(例如,最新)的图像推送到该存储库时,前一个图像将变为未标记,但仍保留在存储库中。这导致在存储库中堆叠了许多未标记的图像。我想要一个命令,使用 azure cli,一次性删除所有未标记的图像。

例如,键入以下命令:

az acr repository show-manifests -n myRegistry --repository myRepo

为 d24-staging-fuzzy-search-srv 存储库返回了几个清单:

[ { "digest": "sha256:blablabla1", "tags": null, "timestamp": "t1" }, { "digest": "sha256:blablabla2", "tags": null, "timestamp": "t2" }, { "digest": "sha256:blablabla3", "tags": [ "latest" ], "timestamp": "t3" }]

我想在 azure cli 中有一个命令,它删除所有标签为“null”的 mainfest,并保留标签为“latest”的那个

4

4 回答 4

1

如果有人仍然想知道完成此操作的单行命令是什么,请使用以下 Bash 脚本:

az acr repository show-manifests -n <registryName> --repository <repositoryName> --query "[?tags[0]==null].digest" -o tsv | xargs -I% az acr repository delete -n <registryName> -t <repositoryName>@% -y

来源:https ://docs.microsoft.com/en-us/azure/container-registry/container-registry-faq

标头:如何删除存储库中任何标签未引用的所有清单?

于 2021-09-07T18:47:04.527 回答
1

对于 Linux bash

az acr repository show-manifests -n myRegistry --repository myRepository --query "[?tags[0]==null].digest" -o tsv | xargs -I% az acr repository delete -n myRegistry -t myRepository@% --yes

对于 Windows PowerShell:

az acr repository show-manifests -n myRegistry --repository myRepository --query "[?tags[0]==null].digest" -o tsv | %{ az acr repository delete -n myRegistry -t myRepository@$_ --yes }

于 2021-10-27T13:12:18.870 回答
1

尝试使用以下命令。

az acr repository delete -n yourRegistry --image yourRepo:null

有关更多详细信息,请参阅这篇文章

按标签删除图像。这将删除 'hello-world:latest' 引用的清单、引用清单的所有其他标记以及任何关联的图层数据。

az acr repository delete -n MyRegistry --image hello-world:latest

于 2018-06-21T08:58:15.893 回答
-1

我最终创建了一个节点脚本,在其中我使用 shelljs 注入了 azure cli 命令。

基本上我所做的是,对于每个存储库,我获取了它的所有清单,并且对于每个不包含“最新”标签的清单都被删除了

于 2018-07-02T14:39:03.630 回答