我可以从 Azure 容器注册表中清除所有存储库,而不需要逐一输入所有存储库吗

Den*_*lin 2 containers azure azure-container-registry acr

我正在尝试从所有存储库中清理一些 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
Run Code Online (Sandbox Code Playgroud)

这里我给出了两个存储库的名称,现在我有 800 个存储库,并且在这个 PURGE_CMD 命令中键入 800 个存储库确实很困难。

我需要一个命令,通过它我可以从 ACR 选择所有存储库并将其存储到 PURGE_CMD 中

Sri*_*SFT 9

我们可以循环输出以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
Run Code Online (Sandbox Code Playgroud)

如果您使用的是 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
Run Code Online (Sandbox Code Playgroud)

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

最后你可以运行:

az acr task create --name PurgeACRImages
--cmd "$PURGE_CMD"
--schedule "5 6 * * 1"
--registry myregistry
--timeout 18000
--context /dev/null
Run Code Online (Sandbox Code Playgroud)