我能否从 Azure 容器注册表中清除所有存储库,而无需逐个输入所有存储库

Ho can I purge all repository from Azure container registry without entering all repository one-by-ne

我正在尝试从所有存储库中清除少量 Azure 容器注册表映像。现在我正在一个接一个地输入存储库名称,但这看起来很乏味。

PURGE_CMD="acr purge --filter 'aag:.*' --filter 'aap_6.0:.*' --ago 1d --untagged --keep 7"

  az acr task create --name PurgeACRImages \
  --cmd "$PURGE_CMD" \
  --schedule "5 6 * * 1" \
  --registry myregistry \
  --timeout 18000 \
  --context /dev/null

这里我给了两个存储库的名称,现在我有 800 个存储库,在这个 PURGE_CMD 命令中输入 800 个存储库真的很难。

我需要一个命令,通过它我可以 select 来自 ACR 的所有回购并存储到 PURGE_CMD

我们可以循环 az acr repository list 的输出,将存储库名称过滤器连接到 PURGE_CMD 变量。

如果您使用的是 Linux 客户端,运行 从命令行执行以下操作:

PURGE_CMD="acr purge --ago 1d --untagged --keep 7"
for i in $(az acr repository list -n <yourRegistryName> -o tsv);do PURGE_CMD+=" --filter '"$i":.'";done
echo $PURGE_CMD

如果您使用 Windows Powershell 运行 从命令行执行以下操作:

$PURGE_CMD="acr purge --ago 1d --untagged --keep 7"
 foreach ($i in $(az acr repository list -n <yourRegistryName> -o tsv)){$PURGE_CMD+=" --filter '"+$i+":.'"}
 echo $PURGE_CMD

注意:<yourRegistryName> 替换为您的 Azure 容器注册表的名称。

终于可以运行:

az acr task create --name PurgeACRImages
--cmd "$PURGE_CMD"
--schedule "5 6 * * 1"
--registry myregistry
--timeout 18000
--context /dev/null