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

Azure DevOps 2022本地部署如何运行Container Jobs?

本地Azure DevOps 2022 Container Jobs 实现方案

可行性确认

本地部署的Azure DevOps Server 2022完全支持Container Jobs,只要你的RHEL 8 Linux代理满足以下条件:

  • 已安装并运行Docker服务
  • 代理执行用户拥有Docker操作权限(例如加入docker组,无需sudo即可调用Docker命令)
  • 代理能访问你指定的容器镜像(本地镜像、公仓镜像或已配置凭据的私有镜像仓库)

正确YAML配置方法

你之前遇到的问题主要是误用了关键字,正确的配置是通过单数container字段直接定义Job的运行容器,而非复数containers或resources下的容器资源配置。以下是完整的配置示例,确保整个构建流程在同一容器内完成:

# 指定运行任务的目标RHEL8代理池/代理
pool:
  name: '你的RHEL8代理池名称'
  # 若要指定特定代理,可添加demands:
  # demands: Agent.Name -equals 你的代理机器名称

# 定义Job运行的容器(所有后续steps都会在这个容器内执行)
container:
  image: 'mcr.microsoft.com/dotnet/sdk:6.0' # 替换为你需要的构建镜像
  # 如果使用私有镜像仓库,需配置服务连接并指定:
  # endpoint: '你的私有镜像仓库服务连接名称'
  # 可选:添加容器运行参数,比如环境变量
  # env:
  #   BUILD_CONFIG: Release

steps:
- script: dotnet restore
  displayName: '容器内执行依赖还原'
- script: dotnet build --configuration Release
  displayName: '容器内执行构建'
- script: dotnet test --configuration Release --no-restore
  displayName: '容器内执行测试'

关键配置说明

  • container字段:这是定义Job级容器的正确关键字,复数containers是用于在resources中定义可重用的容器资源模板,并非直接指定Job的运行环境,这也是你之前收到警告的原因。
  • 代理指定:通过pool确保任务只会分发到已安装Docker的RHEL8代理上,避免在不满足条件的代理上执行。
  • 容器内执行:所有steps下的任务都会在你指定的容器中运行,整个构建流程完全在同一容器环境内完成,无需额外配置。

额外注意事项

  1. 确保代理上的Docker服务处于运行状态:执行systemctl status docker验证
  2. 代理用户权限:将代理执行用户加入docker组,执行usermod -aG docker 代理用户名,并重启代理服务
  3. 镜像拉取:如果使用公仓镜像,确保代理能访问外网;如果是本地镜像,需提前在代理上拉取或构建好该镜像;私有镜像需在Azure DevOps中配置对应的服务连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 22:45:30