如何在CircleCI中从Azure容器注册表拉取镜像?
在CircleCI中从私有Azure容器注册表(ACR)拉取自定义镜像的配置方法
你可以通过两种方式实现CircleCI与私有Azure ACR的认证并拉取镜像,以下是具体配置步骤:
方法一:使用CircleCI Azure ACR Orb(推荐)
虽然Azure ACR Orb主打镜像构建部署功能,但它内置了ACR登录命令,足以满足拉取镜像的需求。
步骤1:配置CircleCI环境变量
在你的CircleCI项目设置中添加以下环境变量:
AZURE_CLIENT_ID:Azure服务主体的客户端IDAZURE_CLIENT_SECRET:Azure服务主体的客户端密钥AZURE_TENANT_ID:Azure租户IDAZURE_ACR_NAME:你的ACR注册表名称
步骤2:编写config.yml配置
在.circleci/config.yml中添加如下工作流步骤:
version: 2.1 orbs: azure-acr: circleci/azure-acr@x.y.z # 替换为该Orb的最新版本号 jobs: pull-acr-image: docker: - image: cimg/base:stable # 自带Docker的CircleCI基础镜像 steps: - azure-acr/login: azure-client-id: $AZURE_CLIENT_ID azure-client-secret: $AZURE_CLIENT_SECRET azure-tenant-id: $AZURE_TENANT_ID registry-name: $AZURE_ACR_NAME - run: name: 拉取自定义镜像 command: docker pull $AZURE_ACR_NAME.azurecr.io/your-image:tag # 替换为你的镜像路径和标签 workflows: pull-from-acr: jobs: - pull-acr-image
方法二:手动执行登录命令(无需Orb)
如果不想依赖Orb,可以直接通过docker login或podman login完成认证,和你提到的GitHub Action逻辑一致。
步骤1:配置CircleCI环境变量
和方法一一致,需配置AZURE_CLIENT_ID、AZURE_CLIENT_SECRET、AZURE_TENANT_ID、AZURE_ACR_NAME
步骤2:编写config.yml配置
version: 2.1 jobs: pull-acr-image: docker: - image: cimg/base:stable steps: - run: name: 登录Azure ACR command: | ACR_LOGIN_SERVER=$AZURE_ACR_NAME.azurecr.io docker login $ACR_LOGIN_SERVER -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET - run: name: 拉取自定义镜像 command: docker pull $AZURE_ACR_NAME.azurecr.io/your-image:tag # 替换为你的镜像路径和标签 # 若使用Podman,可替换上述Docker命令为以下内容: # - run: # name: 登录Azure ACR(Podman) # command: | # ACR_LOGIN_SERVER=$AZURE_ACR_NAME.azurecr.io # podman login $ACR_LOGIN_SERVER -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET # - run: # name: 拉取自定义镜像(Podman) # command: podman pull $AZURE_ACR_NAME.azurecr.io/your-image:tag workflows: pull-from-acr: jobs: - pull-acr-image
注意事项
- 确保你的Azure服务主体拥有ACR的
AcrPull角色权限,否则无法拉取镜像 - 若使用Podman,需确保CircleCI运行环境已安装Podman(可选择预装Podman的基础镜像)
内容的提问来源于stack exchange,提问作者AnonymousDev
相关产品推荐
相关产品推荐

