你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

使用 Azure CLI 查找 Azure 市场映像信息

注意

本文引用了 CentOS,这是一个处于生命周期结束 (EOL) 状态的 Linux 发行版。 请考虑您的使用情况,并据此做好规划。 有关详细信息,请参阅 CentOS 生命周期结束指南。

适用于: ✔️ Linux 虚拟机 ✔️ Windows 虚拟机 ✔️ 灵活规模集

本主题介绍如何使用 Azure CLI 在 Azure 市场中查找 VM 映像。 使用 CLI、资源管理器模板或其他工具以编程方式创建 VM 时,使用此信息指定市场映像。

还可以使用 Azure 市场或 Azure PowerShell 浏览可用的映像和产品/服务。

术语

Azure 中的 Marketplace 映像具有以下属性:

  • 发布者:创建映像的组织。 示例:Canonical、RedHat、SUSE。
  • 产品:发布者创建的一组相关映像的名称。 示例:0001-com-ubuntu-server-jammy、RHEL、sles-15-sp3。
  • SKU:套餐的实例,例如分发的主要版本。 示例:22_04-lts-gen2、8-lvm-gen2、gen2。
  • 版本:映像 SKU 的版本号。

这些值可以单独传递,也可以组合成镜像 URN 进行传递,各值之间用冒号 (:) 分隔。 例如:发布者:产品:Sku:版本。 可将 URN 中的版本号替换为 latest,以使用最新版本的映像。

如果映像发布服务器提供附加许可和购买条款,则必须先接受这些条款才能使用映像。 有关详细信息,请参阅查看购买计划信息。

运行 az vm image list --all 以查看所有可用的映像,但生成整个列表可能需要几分钟时间。 更快的选项是使用az vm image list(没有--all此选项)查看Azure 市场中常用 VM 映像的缓存列表。 例如,运行以下命令以表格式显示列表:

az vm image list --output table

输出包括映像 URN。 如果省略 --all 选项,结果中还可能包含常见映像的 UrnAlias 值,例如 Ubuntu2204。 确切的缓存列表因 Azure CLI 版本和云环境而异。

以下非详尽示例显示了 Azure CLI 2.87.0 返回的一些 Linux 映像别名,包括Azure Linux 4.0 别名:

Architecture    Offer                         Publisher               Sku                                 Urn                                                                             UrnAlias                 Version
--------------  ----------------------------  ----------------------  ----------------------------------  ------------------------------------------------------------------------------  -----------------------  ---------
x64             azurelinux-4                  microsoftazurelinux     4                                   microsoftazurelinux:azurelinux-4:4:latest                                       AzureLinux4              latest
Arm64           azurelinux-4                  microsoftazurelinux     4-arm64                             microsoftazurelinux:azurelinux-4:4-arm64:latest                                 AzureLinux4Arm64         latest
x64             azurelinux-4                  microsoftazurelinux     4-gen1                              microsoftazurelinux:azurelinux-4:4-gen1:latest                                  AzureLinux4Gen1          latest
x64             CentOS                        OpenLogic               8_5-gen2                            OpenLogic:CentOS:8_5-gen2:latest                                                CentOS85Gen2             latest
x64             Debian11                      Debian                  11-backports-gen2                   Debian:debian-11:11-backports-gen2:latest                                       Debian-11                latest
x64             flatcar-container-linux-free  kinvolk                 stable-gen2                         kinvolk:flatcar-container-linux-free:stable-gen2:latest                         FlatcarLinuxFreeGen2     latest
x64             opensuse-leap-15-4            SUSE                    gen2                                SUSE:opensuse-leap-15-4:gen2:latest                                             OpenSuseLeap154Gen2      latest
x64             RHEL                          RedHat                  8-lvm-gen2                          RedHat:RHEL:8-lvm-gen2:latest                                                   RHELRaw8LVMGen2          latest
x64             sles-15-sp3                   SUSE                    gen2                                SUSE:sles-15-sp3:gen2:latest                                                    SLES                     latest
x64             0001-com-ubuntu-server-jammy  Canonical               22_04-lts-gen2                      Canonical:0001-com-ubuntu-server-jammy:22_04-lts-gen2:latest                    Ubuntu2204               latest

以下Windows图像别名是此命令可以返回的另一个非详尽示例:

Architecture    Offer                         Publisher               Sku                                 Urn                                                                            Alias                    Version
--------------  ----------------------------  ----------------------  ----------------------------------  ------------------------------------------------------------------------------ -----------------------  ---------
x64             WindowsServer                 MicrosoftWindowsServer  2022-datacenter-azure-edition       MicrosoftWindowsServer:WindowsServer:2022-datacenter-azure-edition:latest      Win2022AzureEdition       latest
x64             WindowsServer                 MicrosoftWindowsServer  2022-datacenter-azure-edition-core  MicrosoftWindowsServer:WindowsServer:2022-datacenter-azure-edition-core:latest Win2022AzureEditionCore   latest
x64             WindowsServer                 MicrosoftWindowsServer  2019-Datacenter                     MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest                    Win2019Datacenter         latest
x64             WindowsServer                 MicrosoftWindowsServer  2016-Datacenter                     MicrosoftWindowsServer:WindowsServer:2016-Datacenter:latest                    Win2016Datacenter         latest
x64             WindowsServer                 MicrosoftWindowsServer  2012-R2-Datacenter                  MicrosoftWindowsServer:WindowsServer:2012-R2-Datacenter:latest                 Win2012R2Datacenter       latest
x64             WindowsServer                 MicrosoftWindowsServer  2012-Datacenter                     MicrosoftWindowsServer:WindowsServer:2012-Datacenter:latest                    Win2012Datacenter         latest

查找特定映像

可以按 --publisher 或其他参数筛选映像列表以限制结果。

例如,以下命令显示所有 Debian 产品/服务:

az vm image list --offer Debian --all --output table

可以通过添加 --architecture 参数将结果限制为单个体系结构。 例如,如果要显示 Canonical 中提供的所有 Arm64 映像,请执行以下操作:

az vm image list --architecture Arm64 --publisher Canonical --all --output table

查看所有可用映像

在某个位置查找映像的另一种方法是,运行序列中的 az vm image list-publishers、az vm image list-offers 和 az vm image list-skus 命令。 可以使用这些命令确定以下值:

  1. 列出某个位置的映像发布者。 在本例中,我们探讨的是美国西部区域。

    az vm image list-publishers --location westus --output table
    
  2. 对于给定的发布者,列出其产品。 在此示例中,我们将 RedHat 添加为发布者。

    az vm image list-offers --location westus --publisher RedHat --output table
    
  3. 对于给定的产品,列出其 SKU。 在此示例中,我们将 RHEL 添加为套餐。

    az vm image list-skus --location westus --publisher RedHat --offer RHEL --output table
    

注意

Canonical 已更改其最新版本所使用的 Offer 名称。 在 Ubuntu 20.04 之前,套餐名称为 UbuntuServer。 对于 Ubuntu 20.04,Offer 名称为 0001-com-ubuntu-server-focal;对于 Ubuntu 22.04,名称为 0001-com-ubuntu-server-jammy。

  1. 对于给定的发布者、产品和 SKU,显示该映像的所有版本。 在此示例中,我们将 9_1 添加为 SKU。

    az vm image list \
        --location westus \
        --publisher RedHat \
        --offer RHEL \
        --sku 9_1 \
        --all --output table
    

使用 --image 命令创建 VM 时,可将 URN 列的此值与 参数一起传递。 还可以将 URN 中的版本号替换为“latest”以使用最新版本的映像。

如果使用资源管理器模板部署 VM,请在 imageReference 属性中单独设置映像参数。 请参阅模板参考。

查看购买计划信息

Azure 市场中的某些 VM 映像具有附加许可条款和购买条款,你必须接受这些条款,然后才能以编程方式部署这些映像。

若要从此类映像部署 VM,则在首次使用该映像时,需要接受其使用条款;每个订阅只需接受一次。 还需要指定购买计划参数,才能从该映像部署虚拟机

若要查看映像的购买计划信息,请使用映像的 URN 运行 az vm image show 命令。 如果输出中的 plan 属性不是 null,则表示该映像包含在以编程方式部署之前需要接受的条款。

例如,Canonical Ubuntu Server 18.04 LTS 映像没有、额外条款,因为 plan 信息为 null:

az vm image show --location westus --urn Canonical:UbuntuServer:18.04-LTS:latest

输出:

{
  "dataDiskImages": [],
  "id": "/Subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Providers/Microsoft.Compute/Locations/westus/Publishers/Canonical/ArtifactTypes/VMImage/Offers/UbuntuServer/Skus/18.04-LTS/Versions/18.04.201901220",
  "location": "westus",
  "name": "18.04.201901220",
  "osDiskImage": {
    "operatingSystem": "Linux"
  },
  "plan": null,
  "tags": null
}

对 Bitnami 认证的 RabbitMQ 镜像运行类似的命令会显示以下 plan 属性:name、product 和 publisher。 (某些映像还具有 promotion code 属性。)

az vm image show --location westus --urn bitnami:rabbitmq:rabbitmq:latest

输出:

{
  "dataDiskImages": [],
  "id": "/Subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Providers/Microsoft.Compute/Locations/westus/Publishers/bitnami/ArtifactTypes/VMImage/Offers/rabbitmq/Skus/rabbitmq/Versions/3.7.1901151016",
  "location": "westus",
  "name": "3.7.1901151016",
  "osDiskImage": {
    "operatingSystem": "Linux"
  },
  "plan": {
    "name": "rabbitmq",
    "product": "rabbitmq",
    "publisher": "bitnami"
  },
  "tags": null
}

若要部署此映像,则在使用该映像部署 VM 时,需要接受条款,并提供购买计划参数。

接受条款

若要查看并接受许可条款,请使用 az vm image terms 命令。 接受这些条款后,你将启用在你的订阅中通过编程方式进行部署的功能。 对于映像的每个订阅,只需接受条款一次。 例如:

az vm image terms show --urn bitnami:rabbitmq:rabbitmq:latest

输出包括指向许可条款的 licenseTextLink,并指示 accepted 的值为 true:

{
  "accepted": true,
  "additionalProperties": {},
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/providers/Microsoft.MarketplaceOrdering/offertypes/bitnami/offers/rabbitmq/plans/rabbitmq",
  "licenseTextLink": "https://storelegalterms.blob.core.windows.net/legalterms/3E5ED_legalterms_BITNAMI%253a24RABBITMQ%253a24RABBITMQ%253a24IGRT7HHPIFOBV3IQYJHEN2O2FGUVXXZ3WUYIMEIVF3KCUNJ7GTVXNNM23I567GBMNDWRFOY4WXJPN5PUYXNKB2QLAKCHP4IE5GO3B2I.txt",
  "name": "rabbitmq",
  "plan": "rabbitmq",
  "privacyPolicyLink": "https://bitnami.com/privacy",
  "product": "rabbitmq",
  "publisher": "bitnami",
  "retrieveDatetime": "2019-01-25T20:37:49.937096Z",
  "signature": "XXXXXXLAZIK7ZL2YRV5JYQXONPV76NQJW3FKMKDZYCRGXZYVDGX6BVY45JO3BXVMNA2COBOEYG2NO76ONORU7ITTRHGZDYNJNXXXXXX",
  "type": "Microsoft.MarketplaceOrdering/offertypes"
}

若要接受条款,请键入:

az vm image terms accept --urn bitnami:rabbitmq:rabbitmq:latest

使用映像参数部署全新 VM

如果已有映像的相关信息,可以使用 az vm create 命令来进行部署。

若要部署没有计划信息的映像(例如,来自 Canonical 的最新 Ubuntu Server 18.04 映像),请传递 --image 的 URN:

az group create --name myURNVM --location westus
az vm create \
   --resource-group myURNVM \
   --name myVM \
   --admin-username azureuser \
   --generate-ssh-keys \
   --image Canonical:UbuntuServer:18.04-LTS:latest

对于带有购买计划参数的映像(例如由 Bitnami 认证的 RabbitMQ 映像),需要为 --image 传递 URN,同时提供购买计划参数:

az group create --name myPurchasePlanRG --location westus

az vm create \
   --resource-group myPurchasePlanRG \
   --name myVM \
   --admin-username azureuser \
   --generate-ssh-keys \
   --image bitnami:rabbitmq:rabbitmq:latest \
   --plan-name rabbitmq \
   --plan-product rabbitmq \
   --plan-publisher bitnami

如果收到有关接受映像条款的消息,请查看接受条款部分。 请确保 az vm image terms accept 的输出返回值 "accepted": true,,表明你已接受映像的条款。

将现有 VHD 与购买计划信息配合使用

如果来自 VM 的现有 VHD 是使用付费 Azure 市场映像创建,则在从该 VHD 创建全新 VM 时,可能需要提供购买计划信息。

如果你仍有原始 VM 或有使用同一市场映像创建的其他 VM,则可以使用 az vm get-instance-view 从其中获取计划名称、发布者和产品信息。 此示例获取 myResourceGroup 资源组中名为 myVM 的 VM,然后显示购买计划信息 。

az vm get-instance-view -g myResourceGroup -n myVM --query plan

如果在删除原始 VM 之前未获得计划信息,则可提交支持请求。 他们将需要 VM 名称、订阅 ID 和删除操作的时间戳。

获得计划信息后,可以使用 --attach-os-disk 参数指定 VHD 来创建新的 VM。

az vm create \
  --resource-group myResourceGroup \
  --name myNewVM \
  --nics myNic \
  --size Standard_DS1_v2 --os-type Linux \
  --attach-os-disk myVHD \
  --plan-name planName \
  --plan-publisher planPublisher \
  --plan-product planProduct

后续步骤

若要使用映像信息快速创建虚拟机,请参阅使用 Azure CLI 创建和管理 Linux VM。