我需要构建一个镜像(作为 CI 产品),并且仅当标签版本不在我们的私有(private) azure 托管 docker 注册表中时才推送它。
关注此stackoverflow answer我尝试使用 azure 注册登录服务器复制 bash 脚本,但它似乎不支持完全相同的 api(获取 404)。如何通过带有 azure 容器注册表的 http/REST api 实现“检查注册表中是否存在版本/标签”? (不使用内置的az工具)
最佳答案
How can I achieve this "check if version/tag exists in registry" via the http/REST api with azure container registry?
在 Azure 容器注册表中,我们应该使用 Authorization: Basic
对其进行身份验证。
您可以使用 ACR 用户名和密码来获取凭据,然后使用此脚本列出所有标签:
export registry="jasonacrr.azurecr.io"
export user="jasonacrr"
export password="t4AH+K86xxxxxxx2SMxxxxxzjNAMVOFb3c"
export operation="/v2/aci-helloworld/tags/list"
export credentials=$(echo -n "$user:$password" | base64 -w 0)
export catalog=$(curl -s -H "Authorization: Basic $credentials" https://$registry$operation)
echo "Catalog"
echo $catalog
输出如下:
[root@jasoncli jason]# echo $catalog
{"name":"aci-helloworld","tags":["v1","v2"]}
然后你可以使用shell来检查标签是否存在。
希望这有帮助。
<小时/>更新:
有关 Azure 容器注册表与 Azure AD 集成的更多信息,请参阅此 article .
关于bash - Azure docker 注册表 - 用于检查 docker 标记是否已存在的 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49618657/