从卷创建映像

您可以通过控制台、CLI、API 或 Terraform 从连接到已停止虚拟服务器实例的卷中创建映像,将其作为启动卷。

在当前发布的第二代块存储卷中,不支持从带有客户管理加密功能的 sdp 启动卷创建自定义映像。

用于从卷创建映像的方案

您可以通过多种方式从卷创建映像。

  • 选择实例并从该实例的引导卷创建映像。 新映像继承引导卷的加密 (客户管理或 IBM管理)。

  • 选择实例,从该实例的引导卷创建映像,并指定其他加密。 例如,如果引导卷是使用 IBM管理的加密进行加密的,那么可以为新映像选择客户管理的加密。

Hyper Protect Crypto Services 已被废弃。 客户可以在 2027 年 3 月 20 日之前使用现有实例。 如需了解更多信息,请参阅 《 IBM Cloud Hyper Protect Crypto Services 已弃用 》。 为了持续保障安全,建议将现有的加密密钥迁移到专用的 Key Protect 实例中。 如需了解更多信息,请参阅《 迁移指南 》。

  • 从 Block Storage 卷列表中的引导卷创建映像。 该卷必须是连接到虚拟服务器实例的引导卷。

根据所创建图像的大小,这项工作可能需要 5 分钟到 1.5 小时不等。 您可以取消排队时间过长的作业。 有关更多信息,请参阅 性能注意事项。

为客户图像选择名称时,请记住该名称不能被区域内的其他图像使用,以 ibm- 开头的名称是为系统提供的图像保留的。

在控制台中从卷创建映像

您可以在控制台中将附加到虚拟服务器实例的卷作为启动卷创建映像。

要创建引导卷的映像,必须停止关联的虚拟服务器实例。

  1. 在 IBM Cloud 控制台,单击 导航菜单 图标 菜单图标 > 基础架构 VPC 图标 > 计算 > 图像。

  2. 在 定制图像 选项卡上,单击 创建。 将显示“VPC 的定制图像”页面。

  3. 填写“导入定制图像”页面上的必填字段,然后继续使用其中一个 源 选项。

导入自定义图像用户界面字段
字段 值
地区 选择您希望定制映像可用于供应的地理区域和位置。
地域 从列表中选择。
区域 从列表中选择。
详细信息
名称 您的自定义图片需要命名。
资源组 为该映像选择一个资源组。 此选择日后无法更改。
标记 您可以将标签分配给此资源,以便可以轻松地过滤资源列表中的资源。
访问权管理标记 如名称所示,这些标记可以帮助组织访问控制,而无需更新 IAM 策略。 有关更多信息,请参阅 使用标记控制对资源的访问。
源 通过选择 Virtual server 实例启动卷(默认)或 Block Storage 启动卷来选择自定义映像的来源。
  1. 选择图像源:

    • 选择 虚拟服务器实例引导卷 作为定制映像的源,以显示可用实例的列表。

      • 从列表中选择该实例。
      • 如果实例正在运行并且卷选择器已禁用,请单击 操作 图标 "操作" 图标,然后选择 停止。
    • 选择 Block Storage 引导卷 作为定制映像的源,以显示可用引导卷的列表。

      • 从列表中选择卷。
      • 如果禁用了卷选择器,请单击 操作 图标 "操作" 图标,然后选择 停止附加的实例。
  2. 选择加密类型,即 IBM管理的加密或客户管理的加密。

    • 缺省选择为 提供者管理。 此加密使用 IBM管理的密钥。 以后无法移除加密。
    • 如果您想创建一个使用您自己的密钥进行加密的映像,请选择存储了用于保护您的密码短语的客户根密钥(CRK)的密钥管理服务。 然后,可以通过两种方式指定密钥。
      • 按实例查找
        1. 从列表中选择密钥管理服务实例。
        2. 选择密钥。 如果没有可用的密钥,请单击 创建 以创建密钥。
      • 按 CRN 查找
        1. 请输入您的加密密钥的CRN。
  3. 高级选项:您可以设置允许使用表达式并激活图像生命周期管理。

    • “允许用途”表达式定义了镜像的功能和限制,可帮助您在创建服务器时找到兼容的镜像和配置文件组合。 您可以为虚拟服务器实例和裸机服务器输入 允许使用表达式。
    • 您可以使用切换键激活图像生命周期管理。 通过选择该选项,您可以管理图像何时变为 deprecated 和 obsolete。 您可以调度单个状态变更或调度映像的完整生命周期。 您可以使用日历日期和时间或天数来调度状态更改。 废弃日期必须始终晚于废弃日期。 更多信息,请参阅 自定义图像生命周期。
  4. 在右侧面板上,单击 创建定制图像。

查看和使用定制图像

创建映像时,它将显示在定制映像列表中。

  1. 在 IBM Cloud 控制台中,转至 菜单 菜单图标 > VPC 基础结构 VPC 图标 > 计算> 映像。
  2. 在 定制映像 选项卡上,单击映像名称以查看从中创建该映像的卷。
  3. 查看图像详细信息。 单击 源 部分中的链接以转至源卷。

要在创建实例时使用此映像,请将其选择为操作系统类型。

  1. 在 IBM Cloud 控制台中,转至 菜单 菜单图标 > VPC 基础结构VPC 图标 > 计算> 虚拟服务器实例。
  2. 单击创建。 有关如何配置新虚拟服务器实例的详细信息,请参阅 在控制台中创建虚拟服务器实例。 对于 操作系统,选择 定制映像 磁贴。
  3. 单击 选择定制映像,然后从创建的卷中选择映像。

使用 CLI 从卷创建映像

使用命令行界面 (CLI) 从作为启动卷连接到虚拟服务器实例的卷中创建映像。

准备工作

  1. 确保已下载、安装并初始化以下 CLI 插件:

    • IBM Cloud CLI
    • infrastructure-service 插件

    有关更多信息,请参阅 CLI 参考。

  2. 确保您已创建 IBM Cloud VPC。

从连接到实例的引导卷创建映像

  1. 要找到要从中创建映像的实例,请在区域中 列出实例。 记下命令输出中的实例标识。

    ibmcloud is instances
    
  2. 停止正在运行的实例,然后从卷创建映像。

    ibmcloud is instance-stop INSTANCE_ID
    
  3. 运行 image-create 命令 以创建引导卷的映像。 指定源卷的标识。

    ibmcloud is image-create IMAGE_NAME [--source-volume VOLUME_ID]
    

    请参阅以下示例:

    $ ibmcloud is image-create test-ifv-vol1 --source-volume ecc68c2f-96a1-4862-bc86-14f47e5d9ed8
    Creating image test-ifv-vol1 in resource group  under account Test Account as user test.user@ibm.com...
    ID                 5b2fd4ee-c636-44c4-9673-453fca36832e
    Name               test-ifv-vol1
    CRN                crn:v1:bluemix:public:is:us-south:a/a123456::image:5b2fd4ee-c636-44c4-9673-453fca36832e
    Status             pending
    Status reason      Code                   Message                                                More info
                       image_request_queued   The image request is accepted and waiting for system   -
                                              resources to become available.
    Operating system   Name             Architecture   Vendor   Version                 Dedicated host only
                       centos-8-amd64   amd64          CentOS   8.x - Minimal Install   false
    Source volume      ID                                     Name
                       ecc68c2f-96a1-4862-bc86-14f47e5d9ed8   aa-1-bx-boot-1617035447000
    Created            2021-05-20T09:43:16+08:00
    Visibility         private
    File size(GB)      -
    Encryption         none
    Resource group     f22cf48f-8836-4527-9131-1d7c73ba85e9
    

使用 CLI 调度定制映像生命周期状态更改

创建自定义映像时,还可以使用 ibmcloud is image-create 命令的 --deprecate-at 或 --obsolete-at 选项,同时安排 IBM Cloud VPC 自定义映像的生命周期状态更改。

要调度 deprecate-at 或 obsolete-at 属性,请以 ISO 8601 (YYYY-MM-DDThh:mm:ss+hh:mm) 日期和时间格式指定日期。

  • YYYY 是四位数的年份。
  • MM 是两位数的月份。
  • DD 是两位数的日期。
  • T 分隔日期和时间信息。
  • hh 是两位数的小时。
  • mm 是两位数的分钟数。
  • +hh:mm 或 -hh:mm 是全球标准时区。

例如,北美中央标准时区(CST)2025 年 9 月 30 日晚上 8:00 的日期是 2025-09-30T20:00:00-06:00

安排日期和时间时,不能使用当前日期和时间。 计划的日期和时间必须是未来的。 如果同时定义 deprecate-at 和 obsolete-at 日期和时间,那么 deprecate-at 日期必须晚于 obsolete-at 日期和时间。

ibmcloud is image-create IMAGE_NAME [--source-volume VOLUME_ID] [--deprecate-at YYYY-MM-DDThh:mm:ss+hh:mm] [--obsolete-at YYYY-MM-DDThh:mm:ss+hh:mm]

使用 API 从卷创建映像

通过对 VPC REST API 进行调用,以编程方式从 Block Storage for VPC 引导卷创建定制映像。 您可以列出所有实例和卷,然后使用特定卷的详细信息来创建映像。

准备工作

开始之前,请确保 设置 API 环境。

使用 API 从实例引导创建映像

  1. 找到要从中创建映像的实例和引导卷。 使用 list instance 方法获取可用实例的列表。

    curl -X GET "$vpc_api_endpoint/v1/instances?version=2024-06-11&generation=2" -H "Authorization: Bearer $iam_token"
    
  2. 记下实例标识,并使用它来 检索实例 详细信息。

    curl -X GET "$vpc_api_endpoint/v1/instances/$instance_id?version=2024-06-11&generation=2" -H "Authorization: Bearer $iam_token"
    

    响应包含 volume_attachments 部分中引导卷的名称,标识和其他详细信息。

    "volume_attachments": [
     {
      "device": {
        "id": "a8a15363-a6f7-4f01-af60-715e85b28141"
        },
      "href": "https://us-south.iaas.cloud.ibm.com/v1/instances/e402fa1b-96f6-4aa2-a8d7-703aac843651/volume_attachments/7389-a8a15363-a6f7-4f01-af60-715e85b28141",
      "id": "a8a15363-a6f7-4f01-af60-715e85b28141",
      "name": "my-boot-volume-attachment",
      "volume": {
        "crn": "crn:[...]",
        "href": "https://us-south.iaas.cloud.ibm.com/v1/volumes/49c5d61b-41e7-4c01-9b7a-1a97366c6916",
        "id": "49c5d61b-41e7-4c01-9b7a-1a97366c6916",
        "name": "my-boot-volume"
        }
      }
    ]
    
  3. 如果实例正在运行,请通过在 POST /instances 调用中指定 stop 操作来将其停止:

    curl -X POST \
    "$vpc_api_endpoint/v1/instances/{instance-id}/gen/actions?ersion=2024-06-11&generation=2"
    -H "Authorization: Bearer $iam_token"\
    -d '{"type":"stop"}'
    
  4. 通过使用引导卷标识,创建映像。 请参阅以下示例:

     curl -X POST "$vpc_api_endpoint/v1/images?version=2024-06-11&generation=2"
     -H "Authorization: Bearer $iam_token"
     -d '{
          "name": "my-image",
          "source_volume": {"id": "4fec84ef-baf9-405d-bf3b-9d5a60e068f7"}
          }`
    

    在示例响应中,source_volume 指示用于创建映像的引导卷。 另外,请注意,映像加密显示为 none,因为源卷使用了缺省 IBM管理的加密。 如果 使用的是自己的根密钥,响应将显示 user-managed。

    {
     "created_at": "2021-05-20T00:05:13.873893Z",
     "crn": "crn:[...]",
     "encryption": "none",
     "file": {},
     "href": "https://us-south.iaas.cloud.ibm.com/v1/images/4fec84ef-baf9-405d-bf3b-9d5a60e068f7",
     "id": "4fec84ef-baf9-405d-bf3b-9d5a60e068f7",
     "name": "test-ifv-boot-volume",
     "operating_system": {
       "architecture": "amd64",
       "display_name": "CentOS 8.x - Minimal Install (amd64)",
       "family": "CentOS",
       "href": "https://us-south.iaas.cloud.ibm.com/v1/operating_systems/centos-8-amd64",
       "name": "centos-8-amd64",
       "vendor": "CentOS",
       "version": "8.x - Minimal Install"
       },
     "resource_group": {
       "href": "https://us-south.iaas.cloud.ibm.com/v1/resource_groups/3fad3f2204eb4998c3964d254ffcd771",
       "id": "3fad3f2204eb4998c3964d254ffcd771",
       "name": "Default"
       },
     "status": "pending",
     "status_reasons": [],
     "visibility": "private",
     "source_volume":  {
       "id": "4fec84ef-baf9-405d-bf3b-9d5a60e068f7",
       "crn": "crn:[...]",
       "href": "",
       "name": "my-boot-volume"
       }
     }
    

从卷创建映像并指定您自己的加密密钥

  1. 如上一节所述,找到实例和引导卷信息。 停止实例。

  2. 获取密钥管理服务实例标识和根密钥 CRN。

  3. 发出 API 请求以 创建映像。 如以下示例所示,指定卷 ID 和根密钥的 CRN。

    curl -X POST "$vpc_api_endpoint/v1/images?version=2024-06-11&generation=2"
    -H "Authorization: Bearer $iam_token"
        -d '{
             "name": "my-encrypted-image",
             "source_volume": {"id": "4fec84ef-baf9-405d-bf3b-9d5a60e068f7"}
             "encryption_key":{"crn":"crn:[...key:...]"
            },
    

    响应包含有关根密钥的信息。

    {
     "created_at": "2021-05-20T00:05:13.873893Z",
     "crn": "crn:[...]",
     "encryption_key": {
       "crn": "crn:[...key:...]"
       },
     "encryption": "user_managed",
     "file": {},
     "href": "https://us-south.iaas.cloud.ibm.com/v1/images/4fec84ef-baf9-405d-bf3b-9d5a60e068f7",
     "id": "4fec84ef-baf9-405d-bf3b-9d5a60e068f7",
     "name": "test-ifv-boot-volume",
     "operating_system": {
       "architecture": "amd64",
       "display_name": "CentOS 8.x - Minimal Install (amd64)",
       "family": "CentOS",
       "href": "https://us-south.iaas.cloud.ibm.com/v1/operating_systems/centos-8-amd64",
       "name": "centos-8-amd64",
       "vendor": "CentOS",
       "version": "8.x - Minimal Install"
       },
     "resource_group": {
       "href": "https://us-south.iaas.cloud.ibm.com/v1/resource_groups/3fad3f2204eb4998c3964d254ffcd771",
       "id": "3fad3f2204eb4998c3964d254ffcd771",
       "name": "Default"
       },
     "status": "pending",
     "status_reasons": [],
     "visibility": "private",
     "source_volume":  {
       "id": "4fec84ef-baf9-405d-bf3b-9d5a60e068f7",
       "crn": "crn:[...]",
       "href": "",
       "name": "ifv-boot-vol"
       }
     }
    

使用 API 调度定制映像生命周期状态更改

从卷创建映像时,可以同时安排自定义映像的生命周期状态更改。

要调度 deprecation_at 或 obsolescence_at 属性,请以 ISO 8601 (YYYY-MM-DDThh:mm:ss+hh:mm) 日期和时间格式指定日期。

  • YYYY 是四位数的年份
  • MM 是两位数的月份
  • DD 是两位数的日期
  • T 分隔日期和时间信息
  • hh 是两位数的小时
  • mm 是两位数的分钟数
  • +hh:mm 或 -hh:mm 是全球标准时区

例如,北美中央标准时区(CST)2023 年 9 月 30 日晚上 8:00 的日期是 2023-09-30T20:00:00-06:00

安排日期和时间时,不能使用当前日期和时间。 计划的日期和时间必须是未来的。 如果同时定义 deprecation_at 和 obsolescence_at 日期和时间,那么 obsolescence_at 日期必须晚于 deprecation_at 日期和时间。

curl -X POST "$vpc_api_endpoint/v1/images?version=2023-02-21&generation=2"\
-H "Authorization: Bearer $iam_token"\
-d '{
      "name": "test-ifv-boot-volume",
      "source_volume": {
    	  "id": "4fec84ef-baf9-405d-bf3b-9d5a60e068f7"
      },
      "deprecation_at": "2025-11-28T06:11:28+05:30",
      "obsolescence_at": "2025-12-28T06:11:28+05:30"
    }'

使用 Terraform 从卷创建映像

通过使用 ibm_is_image 资源,使用 Terraform 从 Block Storage for VPC 启动卷创建自定义映像。 指定映像名称后,指定源卷 ID。

您还可以选择指定用于加密自定义映像的客户根密钥的 CRN,并设置 允许使用表达式。 请参阅以下示例:

resource "ibm_is_image" "example" {
  name               = "example-image"
  source_volume      = "xxxx-xxxx-xxxxxxx"
  encrypted_data_key = "eJxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0="
  encryption_key     = "crn:v1:bluemix:public:kms:us-south:a/6xxxxxxxxxxxxxxx:xxxxxxx-xxxx-xxxx-xxxxxxx:key:dxxxxxx-fxxx-4xxx-9xxx-7xxxxxxxx"
  allowed_use {
    api_version       = "2025-04-03"
    bare_metal_server = "enable_secure_boot == true"
    instance          = "enable_secure_boot == true"
  }
  //increase timeouts as per volume size
  timeouts {
    create = "45m"
  }
}

您还可以使用 deprecation_at 或 obsolescence_at 属性,同时安排 IBM Cloud VPC 自定义映像的生命周期状态更改。 以 ISO 8601 (YYYY-MM-DDThh:mm:ss+hh:mm) 日期和时间格式指定日期。

  • YYYY 是四位数的年份
  • MM 是两位数的月份
  • DD 是两位数的日期
  • T 分隔日期和时间信息
  • hh 是两位数的小时
  • mm 是两位数的分钟数
  • +hh:mm 或 -hh:mm 是全球标准时区

例如,北美中央标准时区(CST)2025 年 9 月 30 日晚上 8:00 的日期是 2025-09-30T20:00:00-06:00

安排日期和时间时,不能使用当前日期和时间。 计划的日期和时间必须是未来的。 如果同时定义 deprecation_at 和 obsolescence_at 日期和时间,那么 obsolescence_at 日期必须晚于 deprecation_at 日期和时间。

  • 将状态更改时间安排为 deprecated。

    resource "ibm_is_image" "example" {
      name               = "example-image"
      source_volume      = "xxxx-xxxx-xxxxxxx"
      encrypted_data_key = "eJxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0="
      encryption_key     = "crn:v1:bluemix:public:kms:us-south:a/6xxxxxxxxxxxxxxx:xxxxxxx-xxxx-xxxx-xxxxxxx:key:dxxxxxx-fxxx-4xxx-9xxx-7xxxxxxxx"
      deprecated_at      = "2025-11-28T15:10:00.000Z"
    }
    
  • 将状态更改时间安排为 obsolete。

    resource "ibm_is_image" "example" {
      name               = "example-image"
      source_volume      = "xxxx-xxxx-xxxxxxx"
      encrypted_data_key = "eJxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx0="
      encryption_key     = "crn:v1:bluemix:public:kms:us-south:a/6xxxxxxxxxxxxxxx:xxxxxxx-xxxx-xxxx-xxxxxxx:key:dxxxxxx-fxxx-4xxx-9xxx-7xxxxxxxx"
      obsolescence_at    = "2025-12-28T15:10:00.000Z"
    }
    

后续步骤