Después de crear una imagen de máquina, puedes usarla para hacer copias de la instancia de Compute de origen. Para obtener más información sobre los usos de las imágenes de máquina, consulta Cuándo usar una imagen de máquina.
Una imagen de máquina contiene la mayor parte de la información y los datos necesarios para clonar una instancia.
Una imagen de máquina no se puede modificar. Sin embargo, puedes anular casi todas las propiedades de la imagen de máquina al crear una instancia a partir de ella.
Puedes crear instancias a partir de imágenes de máquina con la Google Cloud consola, la CLI de Google Cloud o REST.
Antes de empezar
-
Si aún no lo has hecho, configura la autenticación.
La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
- Set a default region and zone.
REST
Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .
Roles obligatorios
Para obtener los permisos que necesitas para crear instancias de Compute Engine a partir de imágenes de máquina, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de instancias de Compute (v. 1) (
roles/compute.instanceAdmin.v1
) en la instancia de Compute o en el proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Restricciones
Se aplican las siguientes restricciones al crear instancias a partir de imágenes de máquina:
Puedes crear un máximo de 6 instancias a partir de una imagen de máquina de origen en 60 minutos. Si superas este límite, la operación de creación de la instancia fallará y devolverá un error similar al siguiente:
Operation rate exceeded for resource 'projects/test/global/machineImages/machine-image-1'. Too frequent operations from the source resource.
Para crear más instancias que el límite definido (6 instancias en 60 minutos), crea imágenes de máquina adicionales a partir de la instancia de origen o crea imágenes de máquina de corta duración a partir de las nuevas instancias. A continuación, puedes crear el número de instancias que necesites a partir de las nuevas imágenes de máquina.
No puedes crear instancias a partir de imágenes de máquina con discos regionales conectados mediante la consola Google Cloud . Usa Google Cloud CLI o REST y especifica los parámetros
replicaZones
ydeviceName
de cada disco regional conectado. Para obtener más información, consulta el artículo Crear una instancia a partir de una imagen de máquina con anulaciones de propiedades.
Crear una instancia a partir de una imagen de máquina (sin anulación)
Si quieres crear una instancia que se base completamente en la imagen de máquina sin cambiar las propiedades, usa este método.
Consola
En la Google Cloud consola, ve a la página Crear una instancia.
En el menú
Crear VM a partir de ..., selecciona Imágenes de máquina.En la ventana Crear VM a partir de imagen de máquina que aparece, haz lo siguiente:
Selecciona una imagen de máquina.
Para crear e iniciar la instancia, haz clic en Crear.
gcloud
Usa el comando
gcloud compute instances create
para crear una instancia a partir de una imagen de máquina.gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --source-machine-image=SOURCE_MACHINE_IMAGE_NAME
Haz los cambios siguientes:
INSTANCE_NAME
: el nombre de la instanciaZONE
: la zona de la instanciaSOURCE_MACHINE_IMAGE_NAME
: la imagen de máquina a partir de la que se creará la instancia
Ejemplo
Por ejemplo, puedes usar el siguiente comando
gcloud
para crear una instancia llamadamy-instance
en la zonaus-east1-b
a partir de una imagen de máquina llamadamy-machine-image
.gcloud compute instances create my-instance \ --zone=us-east1-b \ --source-machine-image=my-machine-image
Una vez creada la instancia, el resultado será similar al siguiente:
Created [https://www.googleapis.com/compute/v1/projects/project-12345/zones/us-east1-b/instances/my-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS my-instance us-east1-b e2-standard-2 192.0.2.1 203.224.0.113 RUNNING
REST
En la API, crea una solicitud
POST
al métodoinstances.insert
. En el cuerpo de la solicitud, incluye los siguientes parámetros:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "INSTANCE_NAME", "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL" }
Haz los cambios siguientes:
PROJECT_ID
: tu ID de proyecto.ZONE
: la zona de la instancia.INSTANCE_NAME
: un nombre para la instancia.SOURCE_MACHINE_IMAGE_URL
: URL completa o parcial de la imagen de máquina que quiere usar para crear la instancia. Por ejemplo, si tienes una imagen de máquina llamadamy-machine-image
en un proyecto llamadomyProject
. Las siguientes URLs son válidas:https://www.googleapis.com/compute/v1/projects/myProject/global/machineImages/my-machine-image
projects/myProject/global/machineImages/my-machine-image
global/machineImages/my-machine-image
Crear una instancia a partir de una imagen de máquina con anulaciones de propiedades
Si quieres crear una instancia basada principalmente en la imagen de máquina, pero con algunos cambios, puedes usar el comportamiento de anulación. Para usar el comportamiento de anulación, debes transferir atributos para anular las propiedades de la imagen de máquina al crear la instancia.
Cuando uses la función de anulación, ten en cuenta lo siguiente:
- Al crear una instancia a partir de una imagen de máquina, no puedes anular ninguna propiedad del disco conectado, excepto el nombre del disco.
Debe especificar el parámetro
replicaZones
de cada disco regional adjunto junto con eldeviceName
del disco regional de la imagen de máquina.Si la instancia de origen (que se usa para generar la imagen de máquina) y la nueva instancia pertenecen al mismo proyecto y a la misma región, se aplican las siguientes condiciones:
- La mayoría de las propiedades de la instancia de origen y de la nueva instancia son las mismas. Las propiedades que difieren son, por ejemplo, las direcciones IP efímeras que se asignan automáticamente.
- Si la instancia de origen sigue existiendo cuando creas una instancia nueva, esta no podrá usar el mismo nombre ni la misma zona que la instancia de origen.
Si la instancia de origen que se ha usado para generar la imagen de máquina y la nueva instancia pertenecen al mismo proyecto, pero a regiones diferentes, se aplican las siguientes condiciones:
- Debes anular todos los recursos zonales y regionales de la nueva instancia. Por ejemplo, si creas una instancia a partir de una imagen de máquina cuya instancia de origen pertenecía a otra región, debes anular los recursos regionales, como la subred y las reglas de firewall regionales. Sin embargo, los recursos globales, como los balanceadores de carga y las cuentas de servicio, no necesitan una anulación, a menos que quieras modificarlos.
Consola
En la Google Cloud consola, ve a la página Crear una instancia.
En el menú
Crear VM a partir de ..., selecciona Imágenes de máquina.En la ventana Crear VM a partir de una imagen de máquina que aparece, selecciona una plantilla y, a continuación, haz clic en
Personalizar.Opcional: Especifica otras opciones de configuración. Para obtener más información, consulta Opciones de configuración durante la creación de instancias.
Para crear e iniciar la instancia, haz clic en Crear.
gcloud
Usa el comando
gcloud compute instances create
para crear una instancia a partir de una imagen de máquina y añadir las propiedades que quieras anular.Por ejemplo, puedes usar el siguiente comando
gcloud
para crear una máquina virtual llamadamy-instance
en la zonaus-east1-b
a partir de una imagen de máquina llamadamy-machine-image
. En este ejemplo, se aplican anulaciones para cambiar el tipo de máquina, detener la política de mantenimiento del host y configurar un disco persistente regional con el nombreregional-disk-0
.gcloud compute instances create my-instance \ --zone=us-east1-b \ --source-machine-image=my-machine-image \ --machine-type=e2-standard-2 \ --maintenance-policy=TERMINATE \ --create-disk=device-name=boot-device-0,boot=true,auto-delete=true \ --create-disk=device-name=regional-disk-0,\ replica-zones=^:^us-east1-b:us-east1-c,boot=false
REST
Para anular las propiedades de la imagen de máquina durante la creación de la instancia, crea una solicitud
POST
al métodoinstances.insert
. En el cuerpo de la solicitud, incluya el parámetrosourceMachineImage
y las anulaciones que necesite. Puede añadir cualquier propiedad que normalmente definiría durante la creación de instancias. Por ejemplo, para anular el tipo de máquina, tu llamada a la API incluiría el parámetromachineType
.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "INSTANCE_NAME", "machineType": "zones/ZONE/machineTypes/NEW_MACHINE_TYPE", "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL" }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto.ZONE
: la zona de la instancia.INSTANCE_NAME
: un nombre para la instancia.NEW_MACHINE_TYPE
: el tipo de máquina que quieres usar en la instancia.SOURCE_MACHINE_IMAGE_URL
: URL completa o parcial de la imagen de máquina que quiere usar para crear la instancia. Por ejemplo, si tienes una imagen de máquina llamadamy-machine-image
en un proyecto llamadomyProject
. Las siguientes URLs son válidas:https://www.googleapis.com/compute/v1/projects/myProject/global/machineImages/my-machine-image
projects/myProject/global/machineImages/my-machine-image
global/machineImages/my-machine-image
Anular el comportamiento
El comportamiento de anulación en la API de Compute Engine sigue las reglas de la combinación de parches JSON, que se describen en el RFC 7396. En resumen, se aplican las siguientes reglas:
- Si anulas un campo básico, el campo básico correspondiente de la imagen de máquina se sustituye por el valor del campo básico de la solicitud. Los campos básicos incluyen parámetros como
machineType
yname
. - Si anulas un campo repetido, todos los valores repetidos de esa propiedad se sustituirán por los valores correspondientes proporcionados en la solicitud.
Los campos repetidos suelen ser propiedades de tipo
list
. Por ejemplo,disks
ynetworkInterfaces
son campos repetidos. - Si anulas un
nested object
, el objeto de la imagen de la máquina se combina con la especificación del objeto correspondiente en la solicitud. Ten en cuenta que, si un objeto anidado se encuentra en un campo repetido, el campo se trata según las reglas de los campos repetidos. Las etiquetas son una excepción a esta regla y se tratan como un campo repetido aunque sean de tipoobject
.
Por ejemplo, si quieres crear una VM a partir de una imagen de máquina y crear discos regionales con la VM, usa una anulación para los discos de forma que puedas especificar la opción
replicaZones
. Como el campodisks
es un campo repetido, debe especificar la configuración de disco de todos los discos conectados y del disco de arranque, no solo de los discos regionales.POST https://compute.googleapis.com/compute/v1/projects/my-proj/zones/us-west1-a/instances { "name": "vm-from-image", "sourceMachineImage": "global/machineImages/my-machine-image", "disks": [ { "kind": "compute#attachedDisks", "boot": true, "autoDelete": true, "deviceName": "boot-device", "initializeParams": { "sourceImage": "projects/my-proj/global/images/my-image", "diskType": "projects/my-proj/zones/us-west1-a/diskTypes/pd-standard", } }, { "kind": "compute#attachedDisk", "boot": false, "autoDelete": true, "deviceName": "regional-device-0", "initializeParams": { "diskType": "projects/my-proj/zones/us-west1-a/diskTypes/pd-standard", "replicaZones": [ "projects/my-proj/zones/us-west1-a", "projects/my-proj/zones/us-west1-c" ] } } ] }
Crear una instancia con una imagen de máquina de otro proyecto
Cuando creas una instancia con una imagen de máquina de otro proyecto, es posible que no tengas acceso a la cuenta de servicio vinculada a ese proyecto de origen. Si quieres crear una instancia a partir de una imagen de máquina que se encuentre en otro proyecto, debes asegurarte de que tienes acceso a la imagen de máquina y de anular la propiedad de la cuenta de servicio en la nueva instancia.
Si compartes una imagen de máquina entre proyectos que usan una red de VPC compartida, debes especificar explícitamente los detalles de la VPC compartida al crear una instancia a partir de la imagen de máquina. Por ejemplo, cuando creas una instancia en un proyecto que no es el host, proporciona los detalles de la VPC compartida del proyecto host mediante las marcas
--network
,--subnet
o--network-interface
.En las siguientes secciones se explica cómo crear una instancia a partir de una imagen de máquina ubicada en otro proyecto mediante la CLI de Google Cloud.
Concede acceso a la imagen de máquina almacenada en otro proyecto.
Los permisos se pueden conceder en el proyecto de origen o en la imagen de máquina. Usa el comando
gcloud compute machine-images add-iam-policy-binding
para conceder los permisos en la imagen de la máquina.gcloud compute machine-images add-iam-policy-binding MACHINE_IMAGE_NAME \ --project=MACHINE_IMAGE_PROJECT \ --member='ACCOUNT_EMAIL' \ --role='roles/compute.admin'
Haz los cambios siguientes:
MACHINE_IMAGE_PROJECT
: ID del proyecto que contiene la imagen de máquina de origen.MACHINE_IMAGE_NAME
: el nombre de la imagen de máquina a la que quieres añadir la vinculación de permisos.ACCOUNT_EMAIL
: la dirección de correo delserviceAccount
ouser
que está creando la instancia. Asegúrate de que el correo tenga el formato adecuado para incluir el prefijo obligatorio. El prefijo debe ser uno de los siguientes:user:
especifica este valor si la dirección de correo está asociada a una cuenta de usuario. Por ejemplo,user:user@example.com
.serviceAccount:
especifica este valor si la dirección de correo está asociada a una cuenta de servicio. Por ejemplo,serviceAccount:123456789000-compute@developer.gserviceaccount.com
.
Ejemplo
Por ejemplo, para añadir un enlace
compute.admin
a la imagen de máquina llamadamy-machine-image
a la dirección de correo de la cuenta de servicio123456789000-compute@developer.gserviceaccount.com
, usa el siguiente comandogcloud CLI
:gcloud compute machine-images add-iam-policy-binding my-machine-image \ --project=machine-image-project \ --member='serviceAccount:123456789000-compute@developer.gserviceaccount.com' \ --role='roles/compute.admin'
Asigna al usuario que ejecuta el comando
gcloud compute instances create
el rol Usuario de cuenta de servicio (roles/iam.serviceAccountUser
) en la cuenta de servicio asociada a la imagen de máquina.Usa el comando
gcloud compute instances create
para crear una instancia a partir de una imagen de máquina.gcloud compute instances create INSTANCE_NAME \ --project=INSTANCE_PROJECT_ID \ --zone=ZONE \ --source-machine-image=projects/MACHINE_IMAGE_PROJECT/global/machineImages/MACHINE_IMAGE_NAME \ --service-account=SERVICE_ACCOUNT_EMAIL \ --subnet=SUBNET
Haz los cambios siguientes:
INSTANCE_PROJECT_ID
: el ID del proyecto en el que quieres crear la instanciaINSTANCE_NAME
: nombre de la instanciaZONE
: la zona de la instanciaMACHINE_IMAGE_PROJECT
: el ID del proyecto en el que se encuentra la imagen de máquinaMACHINE_IMAGE_NAME
: la imagen de máquina a partir de la que se creará la instanciaSERVICE_ACCOUNT_EMAIL
: la dirección de correo de la cuenta de servicio que quieras adjuntar a tu instanciaSUBNET
: si la subred y la instancia están en el mismo proyecto, sustituye SUBNET por el nombre de una subred que esté en la misma región que la instancia.Para especificar una subred en una red VPC compartida, sustituye
SUBNET
por una cadena con el siguiente formato:projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
Haz los cambios siguientes:
HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartidaREGION
: la región de la subredSUBNET_NAME
: el nombre de la subred
Ejemplo
Por ejemplo, el siguiente comando crea una VM llamada
my-instance
envm-project
, en la zonaus-east1-b
, a partir de una imagen de máquina llamadamy-machine-image
.La marca
--service-account
especifica la cuenta de servicio que quieres adjuntar a la máquina virtual recién creada. Si no proporcionas esta marca, la cuenta de servicio de origen no se podrá compartir entre ambos proyectos y la operación fallará.gcloud compute instances create my-instance \ --project=vm-project \ --zone=us-east1-b \ --source-machine-image=projects/machine-image-project/global/machineImages/my-machine-image \ --service-account=000123456789-compute@developer.gserviceaccount.com
Una vez creada la VM, el resultado será similar al siguiente:
Created [https://www.googleapis.com/compute/v1/projects/project-12345/zones/us-east1-b/instances/my-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS my-instance us-east1-b e2-standard-2 192.0.2.1 203.224.0.113 RUNNING
Siguientes pasos
- Más información sobre las imágenes de máquina
- Consulta más información sobre cómo crear instancias de Compute Engine.
A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-09-10 (UTC).
-