bash - Azure docker 注册表 - 用于检查 docker 标记是否已存在的 bash 脚本

标签 bash azure docker azure-container-registry

我需要构建一个镜像(作为 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/

相关文章:

azure - 在 Azure 中重新创建相同的存储帐户

git - 可以将 repo 克隆到 Docker 容器吗?

java - 如何在 Docker 中缓存 Maven 依赖项

bash - bash 脚本中的 Sed/Awk

azure - 使用 Terraform 创建 Ansible 库存

python - 如何通过python的re模块从字符串末尾删除最短的匹配模式?

azure - azure blob 可以包含的最小字节数是多少?

docker - 如何让 docker registry 在 windows server 2016 上工作

linux - 在现有子目录中递归创建目录树

bash - 可以在用户提示时获得 bash 输入吗? (本质上是一个事件监听器)