You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:Azure中托管容器镜像供VSTS发布代理拉取的配置方法

解决Azure DevOps发布管道拉取自定义工具容器镜像的配置步骤

首先,你需要把预装工具的容器镜像托管到Azure容器注册表(ACR)——这是Azure专门用于存储容器镜像的服务,再配置Azure DevOps管道的访问权限,就能让代理顺利拉取镜像并运行工具处理产物了。下面是具体的配置流程:

1. 创建Azure容器注册表并推送镜像

  • 如果你还没有ACR,先在Azure门户创建:搜索「容器注册表」,填写名称、关联资源组、选择SKU(Basic版本足够起步),记得启用「管理员用户」(测试场景可用,生产建议用更安全的服务主体)。
  • 本地构建好工具镜像后,用Docker命令推送到ACR:
    # 登录到你的ACR
    az acr login --name <你的ACR名称>
    # 给镜像打符合ACR要求的标签:ACR登录服务器地址/镜像名:版本
    docker tag <本地镜像名>:<版本> <你的ACR登录服务器>/<镜像名>:<版本>
    # 推送镜像到ACR
    docker push <你的ACR登录服务器>/<镜像名>:<版本>
    

2. 配置Azure DevOps访问ACR的权限

推荐两种授权方式,按需选择:

方式一:服务主体授权(生产环境首选)

  • 用Azure CLI创建一个服务主体,给它分配ACR的「AcrPull」(仅拉取)角色:
    az ad sp create-for-rbac --name "acr-pull-sp" --role "AcrPull" --scopes /subscriptions/<你的订阅ID>/resourceGroups/<资源组名>/providers/Microsoft.ContainerRegistry/registries/<你的ACR名称>
    
    执行后会得到appId(服务主体ID)、password(密钥)、tenant(租户ID),务必保存好这些信息。
  • 回到Azure DevOps项目,进入「项目设置」→「服务连接」→「新建服务连接」,选择「Azure资源管理器」→「服务主体(手动)」,填入刚才的订阅ID、租户ID、服务主体ID和密钥,给服务连接命名(比如ACR-Pull-Connection)后保存。

方式二:ACR管理员账号授权(测试场景用)

  • 在Azure门户的ACR「访问密钥」页面,复制管理员用户名和密码。
  • 在Azure DevOps里创建「Docker Registry」类型的服务连接,注册表URL填你的ACR登录服务器(格式如xxx.azurecr.io),填入管理员账号密码后保存。

3. 在发布管道中调用容器镜像

有两种常用的实现方式:

方式一:用Azure DevOps内置Docker任务

  • 添加「Docker」任务,动作选择「Run」,在「容器注册表」下拉框选择你刚创建的服务连接,「镜像名称」填ACR中的镜像路径(比如<你的ACR登录服务器>/<镜像名>:<版本>)。
  • 在「命令参数」里挂载构建产物目录,比如把代理本地的构建产物目录$(Build.ArtifactStagingDirectory)映射到容器内的/app/build-output:
    -v $(Build.ArtifactStagingDirectory):/app/build-output
    
    这样容器里的预装工具就能直接处理挂载进来的构建产物了。

方式二:用脚本直接执行docker run

  • 先添加「Azure CLI」任务,选择之前的服务连接,执行登录ACR的命令:
    az acr login --name <你的ACR名称>
    
  • 再添加「Shell Script」或「PowerShell」任务,执行docker run命令,记得挂载产物目录并指定工具处理命令:
    docker run --rm -v $(Build.ArtifactStagingDirectory):/app/build-output <你的ACR登录服务器>/<镜像名>:<版本> <你的工具处理命令>
    
    其中--rm会在容器运行结束后自动删除容器,避免占用资源。

额外注意事项

  • 微软托管的Azure DevOps代理默认可以访问同订阅下的ACR;如果是自托管代理,要确保代理所在网络能连通ACR(比如在同一个VNet,或者ACR开启了允许公网访问)。
  • 不要把ACR设置为公开访问,必须通过服务主体或管理员账号授权拉取,保证镜像的安全性。

内容的提问来源于stack exchange,提问作者xtreampb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:42:32