使用机器映像可以存储 Compute Engine 上运行的虚拟机实例的一个或多个磁盘的所有配置、元数据、权限和数据。如需了解何时以及如何使用机器映像,请参阅机器映像。
本文档介绍了从虚拟设备导入机器映像的步骤。
准备工作
- 如果要在其中导入机器映像的项目定义了可信映像政策,请将
projects/compute-image-import
和projects/compute-image-tools
添加到允许的发布者列表中。 - 如果您要从其他项目导入虚拟设备,请参阅跨项目导入。
- 查看导入虚拟设备 Compute Engine 指南中的来源虚拟机和 OVF 文件要求。
- 如需了解如何满足导入映像机器的要求,请参阅导入和导出虚拟机映像的前提条件。
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
- 您可以跨项目共享机器映像。不过,共享 VPC 网络不受支持。
- 对于受 VPC Service Controls 保护的项目,不支持此功能。
- 无法通过挂接的磁盘超过 200 TB 的来源虚拟机创建机器映像。
MACHINE_IMAGE_NAME
:您要导入的机器映像的名称。SOURCE_URI
:Cloud Storage 上的 OVA 或 OVF 文件的路径。OS
:OVA 文件的操作系统,默认情况下,此标志是可选的,但在某些情况下可能是必需的。我们建议您提供此标志。将虚拟设备上传至 Cloud Storage。
向
projects.builds.create
方法发送POST
请求。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout": "7200s", "steps":[ { "args":[ "-machine-image-name=MACHINE_IMAGE_NAME", "-ovf-gcs-path=SOURCE_URI", "-os=OS", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":"gce-ovf-machine-image-import" }
请替换以下内容:
PROJECT_ID
:要将 OVA 文件导入的项目的 ID。MACHINE_IMAGE_NAME
:要导入的机器映像的名称。例如my-machine-image
。SOURCE_URI
:OVA 文件的 URI 或包含存储在 Cloud Storage 中的 OVF 软件包的目录。例如gs://my-bucket/my-instance.ova
。OS
:OVA 文件的操作系统,例如ubuntu-1604
。默认情况下,此标志是可选的,但在某些情况下可能是必需的。我们建议您提供此标志。
如需查看可提供的其他
args
值,请参阅 Compute Engine OVF 导入 GitHub 页面的可选标志部分。- 操作系统:
Ubuntu 1404
- CPU:
2 CPUs
- 内存:
2048 MB
- 操作系统:
Ubuntu 1404
- CPU:
2 CPUs
- 内存:
2048 MB
- 操作系统:
Ubuntu 1404
- 网络:
custom-vpc-network
- 子网:
company-vpc-us-east1-c
- 可用区:
us-east1-c
- 操作系统:
Ubuntu 1404
- 网络:
custom-vpc-network
- 子网:
company-vpc-us-east1-c
- 可用区:
us-central1-c
将虚拟设备添加到 Cloud Storage。
导入过程要求在机器映像的操作系统上安装软件包管理器。这些软件包管理系统可能需要对 Google Cloud外部的软件包代码库发出请求。 若要允许访问这些更新,您需要配置 Cloud NAT。如需了解详情,请参阅使用 Cloud Router 创建 NAT 配置。
配置专用 Google 访问通道。有关了解详情,请参阅配置专用 Google 访问通道。
使用 Google Cloud CLI 或 Cloud Build API 导入机器映像。
从虚拟设备导入机器映像时,系统会在您的项目中创建临时虚拟机。为确保这些临时虚拟机未被分配外部 IP 地址,您必须指定其他标志或参数。
如需详细了解必需的标志或参数,请点击以下标签页:
PROJECT_ID
:要将机器映像导入的项目的 ID。MACHINE_IMAGE_NAME
:要导入的机器映像的名称。例如my-machine-image
。SOURCE_URI
:存储在 Cloud Storage 中的 OVA 文件的 URI,例如gs://my-bucket/my-machine.ova
。OS
:OVA 文件的操作系统,例如ubuntu-1604
。默认情况下,此标志是可选的,但在某些情况下可能是必需的。我们建议您提供此标志。 如需查看受支持的值列表,请参阅gcloud compute instances import
命令的--os
标志选项。ZONE
:要导入机器映像的可用区。将虚拟设备添加到 Cloud Storage。
创建服务账号并分配最小角色。如需详细了解如何创建服务账号,请参阅创建和管理服务账号。
指定的 Compute Engine 服务账号必须至少具有以下角色:
roles/compute.storageAdmin
roles/storage.objectViewer
为
--compute-service-account
标志指定的服务账号至少需要这些角色。 如需了解详情,请参阅为 Compute Engine 服务账号授予所需角色。使用
gcloud compute machine-images import
命令从虚拟设备导入机器映像。gcloud compute machine-images import MACHINE_IMAGE_NAME \ --source-uri=gs:SOURCE_URI \ --os=OS \ --compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL \ --service-account=SERVICE_ACCOUNT_EMAIL \ --scopes=SCOPES
请替换以下内容:
MACHINE_IMAGE_NAME
:您要导入的机器映像的名称。SOURCE_URI
:Cloud Storage 上的 OVA 或 OVF 文件的路径。OS
:OVA 文件的操作系统,默认情况下,此标志是可选的,但在某些情况下可能是必需的。我们建议您提供此标志。TEMP_SERVICE_ACCOUNT_EMAIL
:与上一步中创建的自定义服务账号关联的电子邮件地址。此服务账号由临时虚拟机使用。如果未指定,则虚拟机会使用默认的 Compute Engine 服务账号。SERVICE_ACCOUNT_EMAIL
:与自定义服务账号关联的电子邮件地址,用于挂接到通过此机器映像创建的任何虚拟机。此服务账号没有权限限制,您可以根据需要对其进行自定义。如果未指定,则默认的 Compute Engine 服务账号会挂接到该虚拟机。SCOPES
:指定--service-account
选项的访问权限级别。如果未指定,则使用默认范围。有关详情,请查看--scopes
标志。
将虚拟设备添加到 Cloud Storage。
创建服务账号并分配最小角色。如需详细了解如何创建服务账号,请参阅创建服务账号。
指定的 Compute Engine 服务账号必须至少具有以下角色:
roles/compute.storageAdmin
roles/storage.objectViewer
为
-compute-service-account
参数指定的服务账号至少需要这些角色。如需了解详情,请参阅为 Compute Engine 服务账号授予所需角色。使用 Cloud Build API 向
projects.builds.create
方法发送POST
请求。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout":"7200s", "steps":[ { "args":[ "-machine-image-name=MACHINE_IMAGE_NAME", "-ovf-gcs-path=SOURCE_URI", "-os=OS", "-zone=ZONE", "-compute-service-account=TEMP_SERVICE_ACCOUNT_EMAIL", "-service-account=SERVICE_ACCOUNT_EMAIL", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":"gce-ovf-machine-image-import" }
请替换以下内容:
PROJECT_ID
:要将机器映像导入的项目的 ID。MACHINE_IMAGE_NAME
:要导入的机器映像的名称。例如my-machine-image
。SOURCE_URI
:存储在 Cloud Storage 中的 OVA 文件的 URI,例如gs://my-bucket/my-machine.ova
。OS
:OVA 文件的操作系统,例如ubuntu-1604
。默认情况下,此标志是可选的,但在某些情况下可能是必需的。我们建议您提供此标志。 如需查看受支持的值列表,请参阅gcloud compute instances import
命令的--os
标志选项。ZONE
:要导入机器映像的可用区。TEMP_SERVICE_ACCOUNT_EMAIL
:与上一步中创建的自定义服务账号关联的电子邮件地址。此服务账号由临时虚拟机使用。如果未指定,则虚拟机会使用默认的 Compute Engine 服务账号。SERVICE_ACCOUNT_EMAIL
:与自定义服务账号关联的电子邮件地址,用于挂接到通过此机器映像创建的任何虚拟机。此服务账号没有权限限制,您可以根据需要对其进行自定义。如果未指定,则默认的 Compute Engine 服务账号会挂接到该虚拟机。SCOPES
:指定--service-account
选项的访问权限级别。如果未指定,则使用默认范围。有关详情,请查看--scopes
标志。
- 详细了解机器映像
- 通过机器映像创建虚拟机实例
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
局限和限制
支持的操作系统
如需获取操作系统支持,请参阅操作系统详细信息。
导入机器映像
您可以使用 Google Cloud CLI 或 Cloud Build API 从虚拟设备导入机器映像。
gcloud
使用
gcloud compute machine-images import
命令可通过虚拟设备导入机器映像。gcloud compute machine-images import MACHINE_IMAGE_NAME \ --source-uri=gs:SOURCE_URI \ --os=OS
请替换以下内容:
示例
例如,您可以使用以下
gcloud
命令从名为my-ova
的源 OVA 文件中导入一个名为my-machine-image
的机器映像,该文件存储在gs://my-bucket
目录中并且运行centos-7
:gcloud compute machine-images import my-machine-image \ --source-uri=gs://my-bucket/my-ova/ \ --os=centos-7
REST
通过替换 OVF 文件中的设置来导入机器映像
从虚拟设备导入机器映像时,您可以替换 OVF 文件中的设置。例如,您可以更改 CPU 或内存配置,也可以使用自定义网络。
自定义 CPU 和内存
如需替换在 OVF 文件中指定的 CPU 或内存配置,请完成以下步骤:
gcloud
如需替换 OVF 文件中指定的 CPU 或内存配置,请按照 Google Cloud CLI 步骤导入机器映像并指定
--custom-cpu
和--custom-memory
标志。示例
一个名为
my-machine-image
的机器映像对 OVF 文件中的设置应用了以下替换:如需导入包含这些替换内容的
my-machine-image
,请运行以下命令:gcloud compute machine-images import my-machine-image \ --os=ubuntu-1404 --source-uri=gs://my-bucket/Ubuntu.ova \ --custom-cpu=2 --custom-memory=2048MB
REST
如需替换在 OVF 文件中指定的 CPU 或内存配置,请按照 Compute Engine API 步骤导入机器映像并指定
-machine-type
参数。此-machine-type
表示要使用的预定义或 N1 系列自定义机器类型。示例
my-project
项目中一个名为my-machine-image
的机器映像对 OVF 文件中的设置应用了以下替换:如需导入包含这些替换内容的
my-machine-image
,请向 Cloud Build API 发出以下请求。POST https://cloudbuild.googleapis.com/v1/projects/my-project/builds { "timeout":"7200s", "steps":[ { "args":[ "-machine-image-name=my-machine-image", "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova", "-os=ubuntu-1404", "-machine-type=custom-2-2048", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":"gce-ovf-machine-image-import" }
自定义网络
如需替换 OVF 文件中指定的网络配置,请完成以下步骤:
gcloud
如需设置自定义网络,请按照 Google Cloud CLI 步骤导入机器映像并指定
--network
标志。如果该网络配置了自定义子网模式,您还必须指定--subnet
和--zone
标志。示例
一个名为
my-machine-image
的机器映像对 OVF 文件中的设置应用了以下替换:如需导入包含这些替换内容的
my-machine-image
,请运行以下示例命令:gcloud compute machine-images import my-machine-image \ --os=ubuntu-1404 \ --source-uri=gs://my-bucket/Ubuntu.ova \ --network=custom-vpc-network \ --subnet=company-vpc-us-east1-c \ --zone=us-east1-c
REST
如需使用自定义网络,请按照 REST 步骤导入机器映像,并指定
-network
参数。 如果该网络配置了自定义子网模式,您还必须指定-subnet
和-zone
参数。示例
一个名为
my-machine-image
的机器映像对 OVF 文件中的设置应用了以下替换:如需导入包含这些替换内容的
my-machine-image
,请向 Compute Engine API 发出以下请求。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout":"7200s", "steps":[ { "args":[ "-machine-image-name=my-machine-image", "-ovf-gcs-path=gs://my-bucket/Ubuntu.ova", "-os=ubuntu-1404", "-zone=us-central1-c", "-network=custom-vpc-network", "-subnet=company-vpc-us-east1-c", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUsILD_ID" ] } ], "tags":"gce-ovf-machine-image-import" }
将
PROJECT_ID
替换为您的项目 ID。在不允许外部 IP 地址的网络内导入机器映像
如需使用不允许外部 IP 地址的网络导入机器映像,请完成以下步骤:
gcloud
使用带有
--no-address
标志的gcloud compute machine-images import
命令。gcloud compute machine-images import MACHINE_IMAGE_NAME \ --source-uri=SOURCE_URI \ --os=OS \ --zone=ZONE \ --no-address
请替换以下内容:
REST
使用 Cloud Build API 向
projects.builds.create
方法发送POST
请求。指定-no-external-ip
参数。POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout":"7200s", "steps":[ { "args":[ "-machine-image-name=MACHINE_IMAGE_NAME", "-ovf-gcs-path=SOURCE_URI", "-os=OS", "-zone=ZONE", "-no-external-ip", "-client-id=api", "-timeout=7000s" ], "name":"gcr.io/compute-image-tools/gce_ovf_import:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":"gce-ovf-machine-image-import" }
请替换以下内容:
使用自定义服务账号导入机器映像
在机器映像导入过程中,系统会在您的项目中创建临时虚拟机 (VM) 实例。这些临时虚拟机上的导入工具必须经过身份验证。
服务账号是关联到虚拟机的身份。服务账号访问令牌可通过虚拟机元数据服务器访问,用于对虚拟机上的导入工具进行身份验证。
默认情况下,导入过程使用默认 Compute Engine 服务账号。但是,如果您在项目中停用了默认 Compute Engine 服务账号,或者如果要使用自定义 Compute Engine 服务账号,则需要创建一个服务账号并针对导入过程指定该账号。
gcloud
REST
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-07-08。
-