“acr purge --untagged” 正在从 ACR 存储库中删除所有标记的图像

Kon*_*262 5 azure-container-registry

如果我在 ACR 存储库中有以下标签和清单...

在此输入图像描述

当我运行以下命令时,它会返回以下内容...

az acr repository show-manifests --name "[registry-name]" --repository "[repository-name]"
Run Code Online (Sandbox Code Playgroud)
[
  {
    "digest": "sha256:30be2b07e723b0f36fed370c386b027e52dbcd0ad2ad2fcac1d3b7d1b361292f",
    "tags": [
      "982878",
      "master"
    ],
    "timestamp": "2022-09-07T15:49:04.4187041Z"
  }
]
Run Code Online (Sandbox Code Playgroud)

当我运行以下清除命令时......

az acr run --cmd "acr purge --filter '[repository-name]:.*' --untagged --ago 1m" --registry [registry-name] /dev/null
Run Code Online (Sandbox Code Playgroud)

它正在删除标签和清单,并且因为它删除了所有内容,所以存储库也被删除。

在此输入图像描述

为什么当我使用该标志时它会这样做,--untagged并且您可以清楚地看到它没有根据起始状态取消标记?

kav*_*yaS 5

我尝试在我的环境中重现相同的内容\n我有两个存储库,hello-world with 1 tag: latest\n在此输入图像描述

\n

我检查了您尝试过的以下命令:

\n
PURGE_CMD="acr purge --filter \'hello-world:.*\' \\\n--untagged \xe2\x80\x93ago 1m"\n\naz acr run \\\n  --cmd "$PURGE_CMD" \\\n  --registry myregistry807 \\\n  /dev/null\n
Run Code Online (Sandbox Code Playgroud)\n

它甚至删除了标记的存储库

\n

在此输入图像描述

\n

这个命令:

\n
az acr run --cmd "acr purge --filter \'hello-world:.*\' --untagged  --ago 1d" --registry myregistry807 /dev/null\n
Run Code Online (Sandbox Code Playgroud)\n

它首先删除标签,然后删除未标记的清单,然后删除注册表。

\n

您可以检查此 清除标签和清单-在按需任务中运行 - Azure 容器注册表 | 微软文档

\n
\n

此清除命令将删除 myregistry 中\n存储库(在本例中为 hello-world)存储库中超过 1 天前修改的所有图像标签和清单以及所有未标记的清单。

\n
\n\n

在bash中:

\n
az acr repository show-manifests -n myregistry807 \xe2\x80\x93repository targetrepository --query "[?tags[0]==null].digest" -o tsv | xargs -I% az acr repository delete -n myregistry807 -t targetrepository @% --yes\n
Run Code Online (Sandbox Code Playgroud)\n

对于预览版本:

\n
az acr manifest  list-metadata  -r  myregistry807 -n hello-world --query "[?tags[0]==null].digest" -o tsv | xargs -I% az acr repository delete -n myregistry807 -t hello-world@% --yes\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n

并且存储库不会被删除,因为它有标签。

\n

然后我检查[?tags[0]!=null]删除除空之外的所有标签,它成功地为我工作:

\n

在此输入图像描述

\n

结果:删除了唯一存在的标记清单:

\n

在此输入图像描述

\n