托管的 DevOps 池为在您的池中运行管道提供了多种虚拟机(VM)映像选项。 可以使用所选市场中的 VM 映像、使用你自己的自定义 Azure 计算库映像,或者使用与 Azure Pipelines Microsoft 托管代理相同的映像来创建你的池。
重要
托管的 DevOps 池将弃用以下映像:
- Azure Pipelines - Windows Server 2019
- Ubuntu 20.04
有关详细信息,请参阅托管 DevOps 池映像弃用计划。
您可以配置包含单个映像或多个映像的池。 当池有多个映像时,管道将使用 别名指定要在其中运行的映像。
选择您的池的映像
创建托管 DevOps 池时会选择默认映像。 可以保留默认选项,也可以在创建池期间更改选项。 若要在创建池后配置映像,请转到 “设置>池”。
选择“从图片库添加”,然后为您的池选择一张或多张图片。
可以在托管 DevOps 池资源属性的fabricProfile部分中配置映像。
以下示例指定三个映像。 有关映像架构的更多信息,请参阅本文中的以下部分。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"name": "fabrikam-managed-pool",
"type": "microsoft.devopsinfrastructure/pools",
"apiVersion": "2025-09-20",
"location": "eastus",
"properties": {
...
"fabricProfile": {
...
"images": [
{
"resourceId": "/subscriptions/subscription_id_placeholder/Providers/Microsoft.Compute/Locations/eastus/publishers/canonical/artifacttypes/vmimage/offers/ubuntu-24_04-lts/skus/server/versions/latest",
"aliases": [
"ubuntu-24.04-gen2"
]
},
{
"wellKnownImageName": "windows-2022"
},
{
"wellKnownImageName": "ubuntu-22.04"
}
]
}
}
}
]
}
每个图像可以具有以下属性:
| 属性 |
说明 |
aliases |
可选的别名列表。 可以使用别名而不是图像的完整资源 ID 来引用图像。 |
resourceID |
要使用的映像的资源 ID。 当您使用 Azure 计算库映像 或来自市场的特定映像时,需要满足该要求。 |
wellKnownImageName |
Azure Pipelines 映像的别名。 使用 Azure Pipelines 映像时是必需的。 |
buffer |
启用 备用代理时, buffer 该值指定要分配给此映像的备用代理的百分比。 所有映像buffer值的总数必须等于 100。 |
以下示例定义三个映像。 备用代理已启用,且已将 100% 的备用代理分配给 windows-2022 映像。
"images": [
{
"resourceId": "/subscriptions/subscription_id_placeholder/Providers/Microsoft.Compute/Locations/eastus/publishers/canonical/artifacttypes/vmimage/offers/ubuntu-24_04-lts/skus/server/versions/latest",
"aliases": [
"ubuntu-24.04-gen2"
],
"buffer": "0"
},
{
"buffer": "100",
"wellKnownImageName": "windows-2022"
},
{
"buffer": "0",
"wellKnownImageName": "ubuntu-22.04"
}
]
在托管 DevOps 池资源属性的 fabric-profile 部分,可以配置映像。
az mdp pool create \
--fabric-profile fabric-profile.json
# other parameters omitted for space
以下示例显示 images 文件的节 fabric-profile.json ,并指定三个图像。 有关映像架构的更多信息,请参阅本文中的以下部分。
{
"vmss": {
"sku": {...},
"images": [
{
"resourceId": "/subscriptions/subscription_id_placeholder/Providers/Microsoft.Compute/Locations/eastus/publishers/canonical/artifacttypes/vmimage/offers/ubuntu-24_04-lts/skus/server/versions/latest",
"aliases": [
"ubuntu-24.04-gen2"
],
"buffer": "0"
},
{
"buffer": "100",
"wellKnownImageName": "windows-2022"
},
{
"buffer": "0",
"wellKnownImageName": "ubuntu-22.04"
}
],
"osProfile": {...},
"storageProfile": {...}
}
}
每个图像可以具有以下属性:
| 属性 |
说明 |
aliases |
可选的别名列表。 可以使用别名而不是图像的完整资源 ID 来引用图像。 |
resourceID |
要使用的映像的资源 ID。 使用 Azure 计算库映像 或 所选市场映像时是必需的。 |
wellKnownImageName |
Azure Pipelines 映像的别名。 使用 Azure Pipelines 映像时是必需的。 |
buffer |
启用 备用代理时, buffer 该值指定要分配给此映像的备用代理的百分比。 所有映像buffer值的总数必须等于 100。 |
以下示例定义三个映像。 已启用待命代理,并将 100% 的待命代理分配给 windows-2022 映像。
{
"vmss": {
"sku": {...},
"images": [
{
"resourceId": "/subscriptions/subscription_id_placeholder/Providers/Microsoft.Compute/Locations/eastus/publishers/canonical/artifacttypes/vmimage/offers/ubuntu-24_04-lts/skus/server/versions/latest",
"aliases": [
"ubuntu-24.04-gen2"
],
"buffer": "0"
},
{
"buffer": "100",
"wellKnownImageName": "windows-2022"
},
{
"buffer": "0",
"wellKnownImageName": "ubuntu-22.04"
}
],
"osProfile": {...},
"storageProfile": {...}
}
}
在托管 DevOps 池资源属性的 fabricProfile 部分中,可以配置镜像。
以下示例指定三个映像。 有关映像架构的更多信息,请参阅本文中的以下部分。
resource managedDevOpsPools 'Microsoft.DevOpsInfrastructure/pools@2025-09-20' = {
name: 'fabrikam-managed-pool'
location: 'eastus'
properties: {
...
fabricProfile: {
...
images: [
{
resourceId: '/subscriptions/subscription_id_placeholder/Providers/Microsoft.Compute/Locations/eastus/publishers/canonical/artifacttypes/vmimage/offers/ubuntu-24_04-lts/skus/server/versions/latest'
aliases: [
'ubuntu-24.04-gen2'
]
}
{
wellKnownImageName: 'windows-2022'
}
{
wellKnownImageName: 'ubuntu-22.04'
}
]
}
}
}
每个图像可以具有以下属性:
| 属性 |
说明 |
aliases |
可选的别名列表。 可以使用别名而不是图像的完整资源 ID 来引用图像。 |
resourceID |
要使用的映像的资源 ID。 使用 Azure 计算库映像 或 所选市场映像时是必需的。 |
wellKnownImageName |
Azure Pipelines 映像的别名。 使用 Azure Pipelines 映像时需要。 |
buffer |
启用 备用代理时, buffer 该值指定要分配给此映像的备用代理的百分比。 所有映像buffer值的总数必须等于 100。 |
以下示例定义三个映像。 已启用备用代理,并将备用代理的 100% 分配给 windows-2022 映像。
images: [
{
resourceId: '/subscriptions/subscription_id_placeholder/Providers/Microsoft.Compute/Locations/eastus/publishers/canonical/artifacttypes/vmimage/offers/ubuntu-24_04-lts/skus/server/versions/latest'
aliases: [
'ubuntu-24.04-gen2'
]
buffer: 0
}
{
buffer: 100
wellKnownImageName: 'windows-2022'
}
{
buffer: 0
wellKnownImageName: 'ubuntu-22.04'
}
]
如果选择单个映像,则池中的所有管道都使用该映像运行。 如果选择多个映像,则可以指定每个管道要使用的映像。 有关更多信息,请参阅每个池使用多个映像。
如果池中有多个映像,并且不使用管道中的要求来指定映像,则管道将使用池中第一个列出的映像运行。 可以通过以下两种方式更改池中的映像顺序:
- 使用模板:更改
fabricProfile部分中的images列表中图像的顺序。
- 使用拖动:在 Azure 门户中 对映像列表中的映像 进行排序。
可以从以下类型的图像中进行选择:
Azure Pipelines 映像
托管 DevOps 池提供了多个预配置映像,这些映像与 Azure Pipelines 的所选 Microsoft 托管代理具有相同的软件。
托管 DevOps 池中提供的 Azure Pipelines 映像的生命周期遵循 Microsoft 托管代理映像的生命周期。 如果 Microsoft 托管代理中的镜像已被弃用,则相应的托管 DevOps 池中的镜像也会在类似的时间框架内被弃用。 Microsoft托管代理中可用的映像版本可能与托管 DevOps 池中针对同一映像类型的可用映像版本略有不同。
有关托管 DevOps 池映像生命周期的更多信息,请参阅映像生命周期。
使用 Azure 门户指定 Azure Pipelines 映像时,始终使用最新版本的映像。
若要指定 Azure Pipelines 映像,请使用 wellKnownImageName 该属性提供映像的别名。 请参阅 Azure Pipelines 映像的预定义别名列表。
"images": [
{
"wellKnownImageName": "windows-2022"
}
]
可以在设置中 wellKnownImageName 指定版本(例如 "wellKnownImageName": "windows-2022/latest" 或 "wellKnownImageName": "windows-2022/20250427.1.0")。 如果未指定版本, latest 则使用。
若要指定 Azure Pipelines 映像,请使用 wellKnownImageName 该属性提供映像的预定义别名。 请参阅 Azure Pipelines 映像的预定义别名列表。
"images": [
{
"wellKnownImageName": "windows-2022"
}
]
可以在设置中 wellKnownImageName 指定版本(例如 "wellKnownImageName": "windows-2022/latest" 或 "wellKnownImageName": "windows-2022/20250427.1.0")。 如果未指定版本, latest 则使用。
若要指定 Azure Pipelines 映像,请使用 wellKnownImageName 该属性提供映像的别名。 请参阅 Azure Pipelines 映像的预定义别名列表。
images: [
{
wellKnownImageName: 'windows-2022'
}
]
可以在设置中 wellKnownImageName 指定版本(例如 wellKnownImageName: 'windows-2022/latest' 或 wellKnownImageName: 'windows-2022/20250427.1.0')。 如果未指定版本, latest 则使用。
每个映像都包含以下已安装的软件:
| 图像 |
包含的软件 |
| Azure Pipelines - Windows Server 2025 |
包含的软件 |
| Azure Pipelines - Windows Server 2022 |
包含的软件 |
| Azure Pipelines - Windows Server 2019 |
包含的软件 |
| Azure Pipelines - Ubuntu 24.04 |
包含的软件 |
| Azure Pipelines - Ubuntu 22.04 |
包含的软件 |
重要
托管的 DevOps 池将弃用以下映像:
- Azure Pipelines - Windows Server 2019
- Ubuntu 20.04
有关详细信息,请参阅托管 DevOps 池映像弃用计划。
所选市场映像
托管的 DevOps 池提供了一组由 Microsoft 发布的精选市场 VM 映像,供您在池中使用。
选择 所选市场图像。 选择所需的映像,然后选择所需的版本。 若要始终使用最新版本的映像,请选择 “最新”。
若要指定选定的市场映像,请使用resourceId属性来提供该映像的资源 ID。
"images": [
{
"resourceId": "/subscriptions/subscription_id_placeholder/Providers/Microsoft.Compute/Locations/eastus/Publishers/canonical/ArtifactTypes/VMImage/Offers/ubuntu-24_04-lts/Skus/server/versions/latest"
}
]
若要指定已选择的市场映像,请通过属性resourceId提供映像的资源 ID。
"images": [
{
"resourceId": "/subscriptions/subscription_id_placeholder/Providers/Microsoft.Compute/Locations/eastus/Publishers/canonical/ArtifactTypes/VMImage/Offers/ubuntu-24_04-lts/Skus/server/versions/latest"
}
]
若要指定选定的市场映像,请使用 resourceId 该属性提供映像的资源 ID。
images: [
{
resourceId: '/subscriptions/subscription_id_placeholder/Providers/Microsoft.Compute/Locations/eastus/publishers/canonical/artifacttypes/vmimage/offers/ubuntu-24_04-lts/skus/server/versions/latest'
}
]
Azure Compute Gallery 映像
选择 Azure 计算库映像 以指定订阅中任何可用库中的映像。 支持具有以下操作系统的通用映像:
- Windows Server 2025
- Windows Server 2022
- Windows 11
- Ubuntu 24.04
- Ubuntu 22.04
- Debian 9
- RHEL 9
- RHEL 8
- SUSE 15
- SUSE 12
重要
托管 DevOps 池仅支持通用化 Azure Compute Gallery 映像。
托管 DevOps 池不支持使用付费基础映像创建的 Azure 计算库映像。 如果收到类似于“映像基础不受支持”之类的错误,因为它是付费映像。 请提供一个不同的免费映像,“根据使用 基础映像的免费定价计划 创建的 VM 选择不同的 Azure 计算库映像。
若要指定 Azure 计算库映像,请使用 resourceId 该属性提供映像的资源 ID。
"images": [
{
"resourceId": "/subscriptions/subscription_id_placeholder/resourceGroups/resource_group_placeholder/providers/Microsoft.Compute/galleries/my_images/images/Ubuntu2404"
}
]
若要指定 Azure 计算库映像,请使用 resourceId 该属性提供映像的资源 ID。
"images": [
{
"resourceId": "/subscriptions/subscription_id_placeholder/resourceGroups/resource_group_placeholder/providers/Microsoft.Compute/galleries/my_images/images/Ubuntu2404"
}
]
若要指定 Azure 计算库映像,请使用 resourceId 该属性提供映像的资源 ID。
images: [
{
resourceId: '/subscriptions/subscription_id_placeholder/resourceGroups/resource_group_placeholder/providers/Microsoft.Compute/galleries/my_images/images/Ubuntu2404'
}
]
授予读者角色对 DevOpsInfrastructure 服务主体的访问权限
重要
将 读取者 角色分配给要使用的 Azure 计算图库映像的 DevOpsInfrastructure 服务主体。 如果选择未配置此访问权限的 Azure Compute Gallery 映像,池创建会失败。 可以在单个映像级别分配 “读取者” 角色,或者在图库级别为库中的所有映像分配此角色。
转到 Azure 门户中的所需资源。 若要使用图库中的所有镜像,请转到 Azure 门户中的 Azure 计算图库。 若要仅使用特定映像,请转到该映像。
选择“访问控制(IAM)”。
选择添加>添加角色分配,打开“添加角色分配”页面。
分配以下角色。 有关详细步骤,请参阅使用 Azure 门户分配 Azure 角色。
| 设置 |
值 |
| 角色 |
读取者 |
| 将访问权限分配到 |
服务主体 |
| 成员 |
DevOpsInfrastructure |
为每个池使用多个映像,并使用别名区分
如果池中有多个映像,可以通过引用特定映像的别名来将 Azure DevOps 管道配置为使用该映像。
如果池中有多个映像,并且不使用管道中的要求来指定映像,则管道将使用池中第一个列出的映像运行。 可以通过以下方式更改池中的映像顺序:
- 使用模板:更改
fabricProfile部分中的images列表中图像的顺序。
- 使用拖动:在 Azure 门户中 对映像列表中的映像 进行排序。
如果在将新映像添加到池子后,您的管道遇到了问题,请检查列表中映像的顺序。 请考虑使用需求和别名来显式指定每个管道应使用的映像。
若要添加和管理映像别名,请转到池设置的 “映像 ”部分,然后选择 ...>添加别名。
将任何所需别名添加到 别名 列表,然后选择“ 保存”。
以下示例显示了一个池,其中包含两个 Azure Pipelines 映像和一个选定的市场映像。 Azure Pipeline 映像显示其默认别名,所选市场映像显示一个名为 ubuntu-24.04-gen2 的单个配置别名。
若要配置别名,请在 aliases 列表中指定别名。 以下示例定义一个具有单个别名(名为 ubuntu-24.04-gen2)的映像。
"images": [
{
"resourceId": "/subscriptions/subscription_id_placeholder/Providers/Microsoft.Compute/Locations/eastus/publishers/canonical/artifacttypes/vmimage/offers/ubuntu-24_04-lts/skus/server/versions/latest",
"aliases": [
"ubuntu-24.04-gen2"
]
}
]
若要配置别名,请在 aliases 列表中指定别名。 以下示例定义一个具有单个别名(名为 ubuntu-24.04-gen2)的映像。
"images": [
{
"resourceId": "/subscriptions/subscription_id_placeholder/Providers/Microsoft.Compute/Locations/eastus/publishers/canonical/artifacttypes/vmimage/offers/ubuntu-24_04-lts/skus/server/versions/latest",
"aliases": [
"ubuntu-24.04-gen2"
]
}
]
若要配置别名,请在 aliases 列表中指定别名。 以下示例定义一个具有单个别名(名为 ubuntu-24.04-gen2)的映像。
images: [
{
resourceId: '/subscriptions/subscription_id_placeholder/Providers/Microsoft.Compute/Locations/eastus/publishers/canonical/artifacttypes/vmimage/offers/ubuntu-24_04-lts/skus/server/versions/latest'
aliases: [
'ubuntu-24.04-gen2'
]
}
]
Azure Pipelines 映像预定义别名
除了配置的任何别名之外,Azure Pipelines 映像还具有以下预定义别名。
| Azure Pipelines 映像 |
预定义的别名 |
| Azure Pipelines - Windows Server 2025 |
windows-2025 |
| Azure Pipelines - Windows Server 2022 |
windows-2022 |
| Azure Pipelines - Windows Server 2019 |
windows-2019 |
| Azure Pipelines - Ubuntu 24.04 |
ubuntu-24.04 |
| Azure Pipelines - Ubuntu 22.04 |
ubuntu-22.04 |
根据需求指定映像
如果池中有多个映像,则可以使用名为 的ImageOverride将管道配置为在特定映像上运行。 在管道中指定 ImageOverride 需求时,托管 DevOps 池仅将作业发送到使用该映像的代理。
若要在具有 ubuntu-24.04-gen2 别名的上一个示例中的 Ubuntu 24.04 映像上运行管道,请在管道部分指定以下需求 pool 。
pool:
name: fabrikam-dev-pool # Name of Managed DevOps Pool
demands:
- ImageOverride -equals ubuntu-24.04-gen2
重要
不要在 ImageOverride 需求中给别名加引号,即使名称中带有空格。
若要使用池中的 Azure Pipelines 映像运行管道,请使用上表中的别名。 若要在上一示例中的 Azure Pipelines Windows Server 2022 映像上运行管道,请在管道部分指定以下需求 pool :
pool:
name: fabrikam-dev-pool # Name of Managed DevOps Pool
demands:
- ImageOverride -equals windows-2022
映像生命周期
当映像的操作系统到达其支持生命周期结束时,托管 DevOps 池的代理映像将被停用。 基于较旧版本操作系统的映像可能会在基于新版本操作系统的映像发布时停用。
映像弃用计划
Azure Pipelines - Windows Server 2019 映像弃用计划
托管 DevOps 池正在删除 Azure Pipelines – Windows Server 2019 映像。
- 自 2025 年 11 月 1 日起,将禁用使用 Azure Pipelines - Windows Server 2019 映像的新池,但这些映像上的现有池将继续运行到 2025 年 12 月 31 日。
- 2025 年 12 月 31 日,将禁用 Azure Pipelines – Windows Server 2019 映像。 使用此映像的代理无法进行资源配置,流水线无法运行。
若要在使用 Azure Pipelines – Windows Server 2019 镜像时保持池的正常运行,请升级到 Azure Pipelines - Windows Server 2022 镜像。 你还可以使用 所选市场映像 中的 Windows Server 2019 映像,或使用你自己的 Azure 计算库(或 共享映像库)中的 Windows Server 2019 映像。 市场映像不包括 Azure Pipelines 映像中预安装的软件。
Ubuntu 20.04 映像弃用计划
Ubuntu 20.04 LTS 标准支持已于 2025 年 5 月 31 日结束,托管 DevOps 池从 所选市场映像 和 Azure Pipelines 映像中删除了 Ubuntu 20.04 映像。
2025 年 7 月 15 日起,禁用了通过使用 Ubuntu 20.04 所选市场镜像或 Azure Pipelines 镜像来创建新池。 自 2025 年 8 月 30 日起,以前配置为使用这些映像的管道不受支持。
为了确保当前使用 Ubuntu 20.04 版本的资源池继续运行,请将其系统映像更新至 Ubuntu 22.04 或 24.04(推荐)。 有关详细信息,请参阅 选择您的池的镜像。 如果池中有多个 映像,请为 Ubuntu 映像 更新别名,以便您的管道在需要 Ubuntu 时使用所需的映像运行。
相关内容