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

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

注意

本文引用了 CentOS,这是一个处于生命周期结束 (EOL) 状态的 Linux 发行版。 请相应地考虑你的使用和规划。 有关详细信息,请参阅 CentOS 生命周期结束指南

适用于:✔️ Linux VM ✔️ Windows VM ✔️ 灵活规模集

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

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

术语

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

  • 发布者:创建映像的组织。 示例: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(如果可用)。 UrnAlias 是为 Ubuntu2204 等常用映像创建的简化版本。 此命令输出的 Linux 映像别名及其详细信息如下:

Architecture    Offer                         Publisher               Sku                                 Urn                                                                             UrnAlias                 Version
--------------  ----------------------------  ----------------------  ----------------------------------  ------------------------------------------------------------------------------  -----------------------  ---------
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-publishersaz vm image list-offersaz 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 更改了他们用于最新版本的套餐名称。 在 Ubuntu 20.04 之前,套餐名称为 UbuntuServer。 对于 Ubuntu 20.04,套餐名称为 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
    

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

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

查看购买计划信息

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

若要从此类映像部署 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 属性:nameproductpublisher。 (某些映像还具有 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 accept-terms 的输出返回值 "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