如果您的本地环境中已有包含您所需软件和配置的虚拟磁盘(有时称为黄金磁盘或黄金映像),您可以将这些虚拟磁盘导入 Compute Engine 中并使用生成的映像创建虚拟机,从而节约时间。导入工具支持大多数虚拟磁盘文件格式,包括 VMDK 和 VHD。
如果您已从 Compute Engine 中导出磁盘,则可以使用该磁盘来创建映像。
如需了解如何创建自动化系统来迁移多个虚拟机 (VM),请参阅将虚拟机迁移到 Compute Engine。
准备工作
- 如果您要使用本指南中的命令行示例,请执行以下操作:
- 安装或更新到 gcloud 命令行工具的最新版本。
- 设置默认区域和可用区。
- 如果您要使用本指南中的 API 示例,请设置 API 访问权限。
- 如果要导入映像的项目已定义受信任的映像政策,请将
projects/compute-image-tools
添加到许可的发布商名单中。
启用 Cloud Build API
导入工具会使用 Cloud Build;因此,您必须在项目中启用该服务,并为 Cloud Build 服务帐号授予在项目中创建和管理资源的权限。
如果您在运行导入工具时不满足这些要求,则该工具将尝试启用 Cloud Build 服务,并为您设置所需的权限。不过,您可以手动授予这些权限,以确保所需权限已生效。
控制台
启用 Cloud Build API。
通过控制台启用 Cloud Build API 时,Compute Engine 会向 Cloud Build 服务帐号授予以下角色,以便 Cloud Build 服务可以将实例导入 Compute Engine 中:
roles/iam.serviceAccountTokenCreator
roles/compute.admin
roles/iam.serviceAccountUser
导入工具还会使用默认的 Compute Engine 服务帐号。默认情况下,Compute Engine 服务帐号具有 IAM Project Editor 角色。如果移除此角色,导入过程可能会失败。如需将该角色添加回服务帐号,请参阅授予访问权限。 如需详细了解 Compute Engine 默认服务帐号,请参阅 Compute Engine 默认服务帐号。
gcloud
如需使用 gcloud
命令行工具设置 Cloud Build 服务,请完成以下步骤:
启用 Cloud Build。
gcloud services enable cloudbuild.googleapis.com
导入工具还会使用默认的 Compute Engine 服务帐号。默认情况下,Compute Engine 服务帐号具有 IAM Project Editor 角色。如果移除此角色,导入过程可能会失败。如需将该角色添加回服务帐号,请参阅授予访问权限。 如需详细了解 Compute Engine 默认服务帐号,请参阅 Compute Engine 默认服务帐号。
将
compute.admin
角色添加到 Cloud Build API 服务帐号。gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:PROJECT_NUM@cloudbuild.gserviceaccount.com \ --role roles/compute.admin
将
iam.serviceAccountUser
角色添加到 Cloud Build API 服务帐号。gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:PROJECT_NUM@cloudbuild.gserviceaccount.com \ --role roles/iam.serviceAccountUser
将
iam.serviceAccountTokenCreator
角色添加到 Cloud Build API 服务帐号。gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:PROJECT_NUM@cloudbuild.gserviceaccount.com \ --role roles/iam.serviceAccountTokenCreator
请替换以下内容:
支持的操作系统
您可以导入可启动的磁盘和不可启动的磁盘。您的虚拟磁盘必须运行以下支持的操作系统之一才能在 Compute Engine 上启动。
限制
此功能具有以下常规限制:
如果要导入运行 RHEL 的虚拟磁盘,您必须在导入之前将 python-boto 软件包安装到该虚拟磁盘上,这样系统才能支持自带许可 (BYOL)。
虚拟磁盘上的操作系统必须支持 ACPI。
受 VPC Service Controls 保护的项目不支持此功能。对于这些环境,请参阅手动导入虚拟磁盘。
此功能在 Linux 上具有以下限制:
不支持跨多个磁盘的逻辑卷管理器 (LVM)。为了使导入正常工作,根文件系统必须位于要导入的磁盘上。
Linux 虚拟磁盘必须使用
grub
作为引导加载程序。Linux 虚拟磁盘必须符合与自定义映像相同的要求,包括对 Virtio-SCSI 存储控制器设备的支持。
此功能在 Windows 上具有以下限制:
当安装在 Windows 虚拟磁盘上时,应用许可名单软件(例如 Carbon Black 的 CB Protection)可能会导致导入过程失败。在导入之前,您可能需要卸载此类软件。
在基于 Windows 的虚拟机上,Microsoft KM-TEST 环回适配器会阻止对元数据服务器的网络访问,因此,您必须在导入之前停用或移除该适配器。
权限
导入虚拟磁盘文件时,映像导入工具会执行多步操作,包括将您的文件上传到 Cloud Storage,创建新的存储分区(如果需要),将该文件下载到 Compute Engine,然后在 Compute Engine 中基于该磁盘文件创建映像。上述过程会自动进行。Google 建议您具有以下角色,以便在使用此功能时获得无缝顺畅的体验:
roles/storage.admin
roles/viewer
roles/resourcemanager.projectIamAdmin
导入过程会在其工作流程中使用默认 Compute Engine 服务帐号。默认情况下,此帐号拥有 roles/editor
权限,该权限对于这一过程就已足够。但是,如果您修改了 Compute Engine 服务帐号的默认角色和权限,请确保该服务帐号仍然应用以下角色:
roles/compute.storageAdmin
roles/storage.objectViewer
检查兼容性
在尝试导入虚拟机的磁盘之前,请先下载预检工具并在虚拟机内部运行该工具。预检工具会检查是否存在任何兼容性问题,这些问题可能会导致导入过程失败或者导致磁盘在 Compute Engine 上无法正常运行。
导入虚拟磁盘
您可以使用 Google Cloud Console、 gcloud
命令行工具或 Cloud Build API 导入虚拟磁盘。
导入可启动的虚拟磁盘
对于可启动的磁盘,您无需指定操作系统,因为导入工具会自动检测操作系统以确定所需的驱动程序和软件包。但是,如需替换检测的操作系统,您可以指定 --os
标志或 -os
参数。如需查看受支持的值列表,请参阅 --os
标志。
控制台
gcloud
使用 gcloud compute images import
命令创建可启动的 Compute Engine 映像。尽管 Compute Engine 可以启动大多数启动磁盘映像,但 import
命令可确保磁盘具备所需的驱动程序和最新的访客环境软件包,而这些正是启动实例以及通过 SSH 或 RDP 连接到实例的必要条件。
您可以从 Cloud Storage 存储分区或本地工作站导入虚拟磁盘文件。
从工作站导入虚拟磁盘文件时,导入工具会为您将该文件自动上传到 Cloud Storage 存储分区。
如果您愿意,可以在开始导入过程之前自行将虚拟磁盘文件上传到 Cloud Storage,但是您必须将该文件上传到属于导入过程所用同一项目的 Cloud Storage 存储分区中。
gcloud compute images import IMAGE_NAME \ --source-file SOURCE_FILE
请替换以下内容:
IMAGE_NAME
:您的目标映像的名称。SOURCE_FILE
:您的虚拟磁盘文件。此文件可以是本地文件或 Cloud Storage 中存储的文件。如果您的虚拟磁盘是本地文件,则可以提供绝对路径或相对路径。如果您的虚拟磁盘文件已存储在 Cloud Storage 中,则该文件必须位于导入过程所用项目的 Cloud Storage 存储分区内,并且您必须按gs://BUCKET_NAME/OBJECT_NAME
格式指定该文件的完整路径。如需了解如何将具备现有许可的映像导入 Google Cloud,请参阅自带许可。
如果您指定了本地文件,则上传操作可能需要很长时间才能完成,具体取决于虚拟磁盘的大小和网络连接的速度。根据磁盘大小,导入操作可能需要运行几十分钟。
示例命令
以下示例会导入存储在 gs://your_gcs_bucket
中名为 my_server.vmdk
的虚拟磁盘。
gcloud compute images import my-imported-image \ --source-file gs://your_gcs_bucket/my_server.vmdk
可选参数
默认情况下,访客环境软件包会添加到所有导入的启动磁盘映像中。如果您不想使用这些软件包,请在导入命令中添加 --no-guest-environment
标志。
API
将虚拟磁盘添加到 Cloud Storage。
在 API 中,创建一个指向 Cloud Build API 的
POST
请求。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-timeout=7000s", "-client_id=api" ], "name":"gcr.io/compute-image-tools/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
请替换以下内容:
PROJECT_ID
:要向其中导入映像的项目的 ID。IMAGE_NAME
:要导入的映像的名称。SOURCE_FILE
:Cloud Storage 中映像的 URI,例如gs://my-bucket/my-image.vmdk
。
如需查看可提供的其他
args
值,请参阅虚拟机映像导入 GitHub 页面的“可选标志”部分。示例响应
以下示例响应类似于返回的输出:
{ "name": "operations/build/myproject-12345/operation-1578608233418", "metadata": { "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata", "build": { "id": "3a2055bc-ccbd-4101-9434-d376b88b8940", "status": "QUEUED", "createTime": "2019-09-20T15:55:29.353258929Z", "steps": [ { "name": "gcr.io/compute-image-tools/gce_vm_image_import:release", "env": [ "BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940" ], "args": [ "-timeout=7000s", "-image_name=my-image", "-client_id=api", "-data-disk", "-source_file=gs://my-bucket/my-image.vmdk" ] } ], "timeout": "7200s", "projectId": "myproject-12345", "logsBucket": "gs://123456.cloudbuild-logs.googleusercontent.com", "options": { "logging": "LEGACY" }, "logUrl": "https://console.cloud.google.com/gcr/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=123456" } }
您可以通过以下几种方式监控您的版本:
- 使用返回的
build-id
运行 projects.builds.get 请求。 - 查看在提供的
logUrl
下托管的日志。
导入不可启动的虚拟磁盘
控制台
gcloud
您可以使用 gcloud compute images import
命令创建不可启动的 Compute Engine 映像。 如果您的虚拟磁盘上没有安装可启动的操作系统,请指定 --data-disk
标志。这样就省却了安装驱动程序和访客环境软件包以让映像能够在 Compute Engine 上启动的步骤。
gcloud compute images import IMAGE_NAME \ --source-file SOURCE_FILE \ --data-disk
请替换以下内容:
IMAGE_NAME
:您的目标映像的名称。SOURCE_FILE
:您的虚拟磁盘文件。此文件可以是本地文件或 Cloud Storage 中存储的文件。如果您的虚拟磁盘是本地文件,您可以使用绝对路径或相对路径。 如果您的虚拟磁盘文件已存储在 Cloud Storage 中,则该文件必须位于导入过程所用项目的 Cloud Storage 存储分区内,并且您必须按gs://BUCKET_NAME/OBJECT_NAME
格式指定该文件的完整路径。
示例命令
以下示例会导入存储在 gs://my-gcs-bucket/
中名为 my-disk.vmdk
的虚拟磁盘。
gcloud compute images import my-imported-image \ --source-file gs://my-gcs-bucket/my-disk.vmdk \ --data-disk
API
将虚拟磁盘添加到 Cloud Storage。
在 API 中,创建一个指向 Cloud Build API 的
POST
请求。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-timeout=7000s", "-client_id=api", "-data_disk" ], "name":"gcr.io/compute-image-tools/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
替换以下
args
值:PROJECT_ID
:要向其中导入映像的项目的 ID。IMAGE_NAME
:要导入的映像的名称。SOURCE_FILE
:Cloud Storage 中映像的 URI,例如gs://my-bucket/my-image.vmdk
。
使用不允许外部 IP 地址的网络来导入磁盘
如需使用不允许外部 IP 地址的网络导入虚拟磁盘,请完成以下步骤:
将虚拟磁盘添加到 Cloud Storage。
映像导入过程要求在虚拟磁盘的操作系统上安装软件包管理器。这些软件包管理器可能需要对 Google Cloud 外部的软件包代码库发出请求。若要允许访问这些更新,您需要配置 Cloud NAT。如需了解详情,请参阅使用 Cloud Router 创建 NAT 配置。
配置专用 Google 访问通道。有关了解详情,请参阅配置专用 Google 访问通道。
使用
gcloud
命令行工具或 Cloud Build API 导入虚拟磁盘。导入虚拟磁盘时,系统会在您的项目中创建临时虚拟机。为确保这些临时虚拟机未被分配外部 IP 地址,您必须指定其他标志或参数。
如需了解详情,请点击以下标签页:
gcloud
使用带有 --no-address
标志的 gcloud compute images import
命令导入您的虚拟磁盘。
gcloud compute images import IMAGE_NAME \ --source-file=SOURCE_FILE \ --zone=ZONE \ --no-address
请替换以下内容:
IMAGE_NAME
:您要创建的磁盘映像的名称。SOURCE_FILE
:您的虚拟磁盘文件。该文件可以是本地文件或 Cloud Storage 中存储的文件。如果您的虚拟磁盘是本地文件,则可以提供绝对路径或相对路径。如果您的虚拟磁盘文件已存储在 Cloud Storage 中,则该文件必须位于导入过程所用项目的 Cloud Storage 存储分区内,并且您必须按gs://BUCKET_NAME/OBJECT_NAME
格式指定该文件的完整路径。ZONE
:要在其中创建映像的可用区。如果留空,则使用项目的默认区域。
API
在 API 中,创建一个对 Cloud Build API 的 POST
请求并指定 -no-external-ip
参数。
POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-zone=ZONE", "-no_external_ip", "-timeout=7000s", "-client_id=api" ], "name":"gcr.io/compute-image-tools/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
请替换以下内容:
PROJECT_ID
:要向其中导入映像的项目的 ID。IMAGE_NAME
:要导入的映像的名称。SOURCE_FILE
:Cloud Storage 中映像的 URI,例如gs://my-bucket/my-image.vmdk
,用于gcloud compute images import
命令。ZONE
:要在其中创建映像的可用区。如果留空,则使用项目的默认区域。
使用 UEFI 引导加载程序来导入虚拟磁盘
对于大多数虚拟磁盘,Compute Engine 可以检测并成功导入具有 UEFI 引导加载程序的磁盘,而无需额外标志。
但是,对于如下所示的情况,您可能需要在导入期间强制执行 UEFI 启动。
- 如果映像导入进程在导入期间未检测到 UEFI 引导加载程序。
- 如果您的磁盘是双重启动磁盘并且具有 hybrid-mbr + UEFI 或 protective-mbr + UEFI 组合。对于双重启动磁盘,导入可能默认为非 UEFI 启动。
如需强制导入项使用 UEFI 启动,您可以使用 Cloud Build API 并指定 -uefi_compatible
参数。为此,请完成以下步骤:
将虚拟磁盘添加到 Cloud Storage。
在 API 中,创建一个指向 Cloud Build API 的
POST
请求。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-uefi_compatible", "-timeout=7000s", "-client_id=api" ], "name":"gcr.io/compute-image-tools/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
请替换以下内容:
PROJECT_ID
:要向其中导入映像的项目的 ID。IMAGE_NAME
:要导入的映像的名称。SOURCE_FILE
:Cloud Storage 中映像的 URI,例如gs://my-bucket/my-image.vmdk
。
使用共享 VPC 来导入虚拟磁盘
由于导入工具会使用 Cloud Build API,因此在使用共享 VPC 导入虚拟磁盘之前,您必须将 compute.networkUser
角色添加到 Cloud Build API 的服务帐号中。
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member serviceAccount:SERVICE_PROJECT_NUM@cloudbuild.gserviceaccount.com \ --role roles/compute.networkUser
替换以下内容:
HOST_PROJECT_ID
:共享 VPC 所属项目的 ID。SERVICE_PROJECT_NUM
:要向其中导入映像的项目的编号。
gcloud
使用 gcloud compute images import
命令导入您的虚拟磁盘。
gcloud compute images import IMAGE_NAME \ --source-file SOURCE_FILE \ --project SERVICE_PROJECT_ID \ --zone ZONE \ --network NETWORK \ --subnet SUBNET
请替换以下内容:
IMAGE_NAME
:要导入的映像的名称。SOURCE_FILE
:您的虚拟磁盘文件。该文件可以是本地文件或 Cloud Storage 中存储的文件。如果您的虚拟磁盘是本地文件,则可以提供绝对路径或相对路径。如果您的虚拟磁盘文件已存储在 Cloud Storage 中,则该文件必须位于导入过程所用项目的 Cloud Storage 存储分区内,并且您必须按gs://BUCKET_NAME/OBJECT_NAME
格式指定该文件的完整路径。SERVICE_PROJECT_ID
:要向其中导入映像的项目的 ID。ZONE
:要向其中导入映像的可用区。此区域必须与子网的地区相匹配。例如,如果SUBNET
为us-west1
。导入区域必须是以下各项之一:us-west1-a
、us-west1-b
或us-west1-c
。NETWORK
:共享 VPC 网络的完整路径,例如projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME
。SUBNET
:共享 VPC 子网的完整路径,例如projects/HOST_PROJECT_ID/global/networks/VPC_SUBNET_NAME
。示例命令
gcloud compute images import example-image \ --source-file gs://source-bucket/source-file.vmdk \ --project my-image-project \ --zone us-west1-c \ --network projects/my-vpc-project/global/networks/my-shared-vpc \ --subnet projects/my-vpc-project/regions/us-west1/subnetworks/my-shared-subnet
API
将虚拟磁盘添加到 Cloud Storage。
在 API 中,创建一个指向 Cloud Build API 的
POST
请求。POST https://cloudbuild.googleapis.com/v1/projects/SERVICE_PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-zone=ZONE", "-network=NETWORK", "-subnet=SUBNET", "-timeout=7000s", "-client_id=api" ], "name":"gcr.io/compute-image-tools/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
替换以下
args
值:SERVICE_PROJECT_ID
:要向其中导入映像的项目的 ID。IMAGE_NAME
:要导入的映像的名称。SOURCE_FILE
:Cloud Storage 中映像的 URI,例如gs://my-bucket/my-image.vmdk
。ZONE
:要向其中导入映像的可用区。此区域必须与子网的地区相匹配。例如,如果SUBNET
为us-west1
。导入区域必须是以下各项之一:us-west1-a
、us-west1-b
或us-west1-c
。NETWORK
:共享 VPC 网络的完整路径,例如projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME
。SUBNET
:共享 VPC 子网的完整路径,例如projects/HOST_PROJECT_ID/global/networks/VPC_SUBNET_NAME
。
使用自定义 Compute Engine 服务帐号导入虚拟磁盘
在映像导入期间,系统会在您的项目中创建临时虚拟机 (VM) 实例。这些临时虚拟机上的映像导入工具必须经过身份验证。
服务帐号是关联到虚拟机的身份。服务帐号访问令牌可通过实例元数据服务器访问,用于对虚拟机上的映像导入工具进行身份验证。
默认情况下,导入过程使用项目的默认 Compute Engine 系统服务帐号。但是,如果您在项目中停用了默认 Compute Engine 服务帐号,或者如果要使用自定义 Compute Engine 服务帐号,则需要创建一个服务帐号并针对导入过程指定该帐号。
gcloud
将虚拟磁盘添加到 Cloud Storage。
创建服务帐号并分配最小角色。如需详细了解如何创建服务帐号,请参阅创建和管理服务帐号。
指定的 Compute Engine 服务帐号必须至少具有以下角色:
roles/compute.storageAdmin
roles/storage.objectViewer
使用
gcloud compute images import
导入映像。gcloud compute images import IMAGE_NAME \ --source-file SOURCE_FILE \ --service-account SERVICE_ACCOUNT_EMAIL
请替换以下内容:
IMAGE_NAME
:您的目标映像的名称。SOURCE_FILE
:您的虚拟磁盘文件。此文件可以是本地文件或 Cloud Storage 中存储的文件。如果您的虚拟磁盘是本地文件,则可以提供绝对路径或相对路径。如果您的虚拟磁盘文件已存储在 Cloud Storage 中,则该文件必须位于导入过程所用项目的 Cloud Storage 存储分区内,并且您必须按gs://BUCKET_NAME/OBJECT_NAME
格式指定该文件的完整路径。SERVICE_ACCOUNT_EMAIL
:与上一步中创建的 Compute Engine 服务帐号关联的电子邮件地址。
示例
以下示例使用具有电子邮件地址
image-export-service-account@proj-12345.iam.gserviceaccount.com
的服务帐号,导入存储在gs://your_gcs_bucket
中名为my_server.vmdk
的可启动虚拟磁盘。gcloud compute images import my-imported-image \ --source-file gs://your_gcs_bucket/my_server.vmdk \ --service-account image-export-service-account@proj-12345.iam.gserviceaccount.com
API
将虚拟磁盘添加到 Cloud Storage。
创建服务帐号并分配最小角色。如需详细了解如何创建服务帐号,请参阅创建和管理服务帐号。
指定的 Compute Engine 服务帐号必须至少具有以下角色:
roles/compute.storageAdmin
roles/storage.objectViewer
将虚拟磁盘添加到 Cloud Storage。
在 API 中,创建一个指向 Cloud Build API 的
POST
请求。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "steps":[ { "args":[ "-image_name=IMAGE_NAME", "-source_file=SOURCE_FILE", "-compute_service_account=SERVICE_ACCOUNT_EMAIL", "-timeout=7000s", "-client_id=api" ], "name":"gcr.io/compute-image-tools/gce_vm_image_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "timeout":"7200s", "tags":[ "gce-daisy", "gce-daisy-image-import" ] }
请替换以下内容:
PROJECT_ID
:要向其中导入映像的项目的 ID。IMAGE_NAME
:要导入的映像的名称。SOURCE_FILE
:Cloud Storage 中映像的 URI,例如gs://my-bucket/my-image.vmdk
。SERVICE_ACCOUNT_EMAIL
:与上一步中创建的 Compute Engine 服务帐号关联的电子邮件地址。
使映像可启动
如果您的 Compute Engine 自定义映像上有可启动的操作系统,但没有必需的 Compute Engine 驱动程序或访客环境软件包,则可以使用映像导入工具使该映像能够在 Compute Engine 上启动。
请使用 --source-image
标志指定要设为可启动的自定义映像,而不要使用 --source-file
标志指定要导入的新磁盘。
gcloud compute images import IMAGE_NAME \ --source-image SOURCE_IMAGE_NAME
请替换以下内容:
IMAGE_NAME
:您的目标映像的名称。SOURCE_IMAGE_NAME
:您的来源映像的名称。如需了解如何将具备现有许可的映像导入 Google Cloud,请参阅自带许可。
示例命令
以下示例将一个名为 my-image
的 Compute Engine 映像转换为名为 my-bootable-image
的可启动映像。在此示例中,--os ubuntu-1604
会替换检测的操作系统。
gcloud compute images import my-bootable-image \ --source-image my-image \ --os ubuntu-1604
资源清理
存储在 Cloud Storage 上的文件和 Compute Engine 中的映像会产生费用。导入工具会将虚拟磁盘文件导入 Cloud Storage 并创建 Compute Engine 自定义映像。
在确认映像已正确导入并且作为 Compute Engine 实例正确启动后,您就可以从 Cloud Storage 中删除虚拟磁盘文件。该工具会在将文件上传到 Cloud Storage 时输出该文件的 URI。此 URI 的格式如下:gs://BUCKET_NAME/tmpimage/IMAGE_NAME
。
如果您使用 --data-disk
标志导入了一个映像,然后使用 --source-image
标志再次运行 import
工具,以将该映像设为可启动映像,则第一个映像仍将存在。如果您不需要该映像,请考虑将其删除。如果您为 --image
和 --source-image
标志指定相同的映像名称,则系统会自动覆盖该映像,您无需执行进一步清理。