我想从Azure容器注册表的各个存储库中删除一些不需要的标签/图像。我想以编程方式完成所有这些操作。例如,我需要的是:
通常,这些操作可以使用Azure CLI和az acr
命令来完成。也许我可以使用az acr
命令创建PowerShell脚本来完成此操作。
但是我可以用python吗?有像Graph API这样的东西可以执行这些操作吗?
我找到了用于ACR的API,但是只允许删除整个注册表。它不允许存储库特定的操作: https://docs.microsoft.com/en-us/rest/api/containerregistry/
我尝试使用docker Registry API: https://docs.docker.com/registry/spec/api/
#!/bin/bash
export registry="myregistry.azurecr.io"
export user="myusername"
export password="mypassword"
export operation="/v2/_catalog"
export credentials=$(echo -n "$user:$password" | base64 -w 0)
export catalog=$(curl -s -H "Authorization: Basic $credentials" https://$registry$operation)
echo "Catalog"
echo $catalog
但是始终会返回错误:
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"registry","Name":"catalog","Action":"*"}]}]}
在使用Docker注册表API之前如何正确通过ACR进行身份验证?
答案 0 :(得分:0)
此问题的答案提供了一个示例,可帮助您删除:Azure Container Registry - delete all images except 2
使用管理员用户凭据时,基本身份验证应该起作用。
答案 1 :(得分:0)
要向ACR进行身份验证,您只需将基本身份验证方法与用户名和密码一起使用即可。格式应为:
curl -v -u $user:$passwd https://yourACRName.azurecr.io:443/v2/_catalog
对于用户名和密码,我建议您使用服务主体进行身份验证。您可以按照Azure Container Registry authentication with service principals中的步骤进行操作。看一下roles for the ACR。 Contributor
角色是适当的角色,具有足够的权限来列出所有存储库,列出每个存储库的所有标签和删除带有特定标签的不需要的图像< / strong>。由于具有管理员权限,因此不建议使用管理员凭据。