Se precisar mover os dados do disco de inicialização do Compute Engine para fora do projeto do Compute Engine, você poderá exportar uma imagem do disco de inicialização para o Cloud Storage como um arquivo tar.gz
Se você precisar criar uma imagem de disco permanente para usar ao criar novos discos permanentes no Compute Engine, leia Como criar uma imagem personalizada .
Você pode fazer backup ou compartilhar uma imagem personalizada exportando-a para o Cloud Storage. Este método é ideal para compartilhar imagens individuais com projetos que não têm acesso às suas imagens. Como alternativa, você pode compartilhar imagens concedendo o papel de usuário de imagem do Compute Engine na imagem ou no projeto que a contém.
O diagrama a seguir mostra alguns fluxos de trabalho típicos para a criação e reutilização de uma imagem personalizada.
Antes de começar
- Leia a página de imagens .
- Se o projeto do qual você deseja exportar a imagem tiver uma política de imagem confiável definida, adicione
projects/compute-image-import
eprojects/compute-image-tools
à lista permitida de editores. - Para saber como atender aos requisitos antes de exportar imagens, consulte Pré-requisitos para importar e exportar imagens de VM .
- Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:
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
-
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.
- exportar do mesmo projeto onde a imagem reside
- exportar a imagem manualmente
No console do Google Cloud, acesse a página Imagens .
Clique no nome da imagem que deseja exportar para acessar a página de detalhes da imagem. Não é possível exportar imagens públicas fornecidas pelo Google . Você só pode exportar imagens criadas ou importadas anteriormente.
Na página de detalhes da imagem, clique em Exportar para abrir a página Exportar imagem .
Na página Exportar imagem , escolha o formato de exportação da imagem.
Escolha o local do Cloud Storage para exportar sua imagem clicando em Procurar .
Escolha um local existente do Cloud Storage para exportar sua imagem. Ou siga as instruções para criar um novo bucket do Cloud Storage e insira um nome para o novo bucket do Cloud Storage.
Depois de escolher um Cloud Storage, escolha um nome de arquivo para a imagem exportada. Você pode usar o nome de arquivo padrão ou escolher seu próprio nome de arquivo.
Depois de escolher um Cloud Storage e inserir um nome de arquivo para a imagem, clique em Selecionar .
Na página Exportar imagem , clique em Exportar . Depois de escolher Exportar , o console do Google Cloud exibe o Histórico de exportação de imagens , onde você pode visualizar o processo de exportação de imagens. Para obter detalhes adicionais sobre o processo de exportação de imagens, clique no ID do Cloud Build para acessar a página Detalhes de exportação de imagens , onde você pode visualizar e fazer download do log de exportação de imagens.
Vá para a página Armazenamento para acessar sua imagem exportada.
-
DESTINATION_URI
: o destino do URI do Cloud Storage para o arquivo de imagem exportado. -
IMAGE_NAME
: o nome da imagem de disco a ser exportada. -
PROJECT_ID
: o ID do projeto que contém a imagem que você deseja exportar. -
SOURCE_IMAGE
: o nome da imagem a ser exportada. -
IMAGE_FORMAT
: o formato da imagem exportada. Os formatos válidos incluemvmdk
,vhdx
,vpc
,vdi
eqcow2
. -
DESTINATION_URI
: o local do URI do Cloud Storage para o qual você deseja exportar o arquivo de imagem. Por exemplo,gs://my-bucket/my-exported-image.vmdk
. - Execute uma solicitação projects.builds.get usando o
build-id
retornado. - Revise os logs hospedados no
logUrl
fornecido. Crie uma conta de serviço e atribua os papéis mínimos. Para obter mais informações sobre como criar contas de serviço, consulte Criação e gerenciamento de contas de serviço .
No mínimo, a conta de serviço especificada do Compute Engine precisa ter os seguintes papéis atribuídos:
-
roles/compute.storageAdmin
-
roles/storage.objectAdmin
Para mais informações, consulte Conceder papéis necessários à conta de serviço do Compute Engine .
-
Use o comando
gcloud compute images export
para exportar a imagem.gcloud compute images export \ --destination-uri DESTINATION_URI \ --image IMAGE_NAME \ --compute-service-account SERVICE_ACCOUNT_EMAIL
Substitua o seguinte:
-
DESTINATION_URI
: o destino do URI do Cloud Storage para o arquivo de imagem exportado. -
IMAGE_NAME
: o nome da imagem de disco a ser exportada. -
SERVICE_ACCOUNT_EMAIL
: o endereço de e-mail associado à conta de serviço do Compute Engine criada na etapa anterior.
-
Crie uma conta de serviço e atribua os papéis mínimos. Para obter mais informações sobre como criar contas de serviço, consulte Criação e gerenciamento de contas de serviço .
No mínimo, a conta de serviço especificada do Compute Engine precisa ter os seguintes papéis atribuídos:
-
roles/compute.storageAdmin
-
roles/storage.objectAdmin
Para mais informações, consulte Conceder papéis necessários à conta de serviço do Compute Engine .
-
Na API, crie uma solicitação
POST
para a API Cloud Build.POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout": "7200s", "steps":[ { "args":[ "-timeout=7000s", "-source_image=SOURCE_IMAGE", "-client_id=api", "-format=IMAGE_FORMAT", "-destination_uri=DESTINATION_URI", "-compute_service_account=SERVICE_ACCOUNT_EMAIL" ], "name":"gcr.io/compute-image-tools/gce_vm_image_export:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-daisy", "gce-daisy-image-export" ] }
Substitua o seguinte:
-
PROJECT_ID
: o ID do projeto que contém a imagem que você deseja exportar. -
SOURCE_IMAGE
: o nome da imagem a ser exportada. -
IMAGE_FORMAT
: o formato da imagem exportada. Os formatos válidos incluemvmdk
,vhdx
,vpc
,vdi
eqcow2
. -
DESTINATION_URI
: o local do URI do Cloud Storage para o qual você deseja exportar o arquivo de imagem. Por exemplo,gs://my-bucket/my-exported-image.vmdk
. -
SERVICE_ACCOUNT_EMAIL
: o endereço de e-mail associado à conta de serviço do Compute Engine criada na etapa anterior.
-
-
IMAGE_NAME
: o nome da imagem a ser exportada. -
DESTINATION_URI
: o local do URI do Cloud Storage para o qual você deseja exportar o arquivo de imagem. -
PROJECT_ID
: ID do projeto onde a imagem está localizada. -
NETWORK
: o caminho completo para uma rede VPC compartilhada . Por exemplo,projects/ HOST_PROJECT_ID /global/networks/ VPC_NETWORK_NAME
. SUBNET
: Opcional. O caminho completo para uma sub-rede VPC compartilhada . Por exemplo,projects/ HOST_PROJECT_ID /regions/ REGION /subnetworks/ SUBNET_NAME
.A especificação desse modo depende do modo de rede VPC.
- Se a rede VPC usar o modo legado, não especifique uma sub-rede.
- Se a rede VPC usar o modo automático, a especificação da sub-rede será opcional.
- Se a rede VPC usar o modo personalizado, esse campo deverá ser especificado.
ZONE
: Opcional. A zona a ser usada para a exportação. Esta zona deve corresponder à região da sub-rede. Por exemplo, se aSUBNET
estiver na regiãous-west1
, a zona de exportação deverá ser uma das seguintes:us-west1-a
,us-west1-b
ouus-west1-c
.Se você especificou uma
SUBNET
, também deverá especificar a zona.Adicione a imagem ao Cloud Storage .
Na API, crie uma solicitação
POST
para a API Cloud Build.POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout": "7200s", "steps":[ { "args":[ "-timeout=7000s", "-source_image=SOURCE_IMAGE", "-client_id=api", "-format=IMAGE_FORMAT", "-destination_uri=DESTINATION_URI", "-network=NETWORK", "-subnet=SUBNET", "-zone=ZONE" ], "name":"gcr.io/compute-image-tools/gce_vm_image_export:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-daisy", "gce-daisy-image-export" ] }
Substitua o seguinte:
-
PROJECT_ID
: o ID do projeto que contém a imagem que você deseja exportar. -
SOURCE_IMAGE
: o nome da imagem a ser exportada. -
IMAGE_FORMAT
: o formato da imagem exportada. Os formatos válidos incluemvmdk
,vhdx
,vpc
,vdi
eqcow2
. -
DESTINATION_URI
: o local do URI do Cloud Storage para o qual você deseja exportar o arquivo de imagem. Por exemplo,gs://my-bucket/my-exported-image.vmdk
. -
NETWORK
: o caminho completo para uma rede VPC compartilhada . Por exemplo,projects/ HOST_PROJECT_ID /global/networks/ VPC_NETWORK_NAME
. SUBNET
: o caminho completo para uma sub-rede VPC compartilhada . Por exemplo,projects/ HOST_PROJECT_ID /regions/ REGION /subnetworks/ SUBNET_NAME
.A especificação desse modo depende do modo de rede VPC.
- Se a rede VPC usar o modo legado, não especifique uma sub-rede.
- Se a rede VPC usar o modo automático, a especificação da sub-rede será opcional.
- Se a rede VPC usar o modo personalizado, esse campo deverá ser especificado.
ZONE
: a zona a ser usada para exportação. Esta zona deve corresponder à região da sub-rede. Por exemplo, se aSUBNET
estiver na regiãous-west1
, a zona de exportação deverá ser uma das seguintes:us-west1-a
,us-west1-b
ouus-west1-c
.Na maioria dos casos, a especificação de uma zona é opcional. Se
SUBNET
for especificado, a zona deverá ser especificada.
Para obter valores
args
adicionais que podem ser fornecidos, consulte a seção de sinalizadores opcionais da página do GitHub de exportação de imagem de VM .-
Opcional: Pare a instância à qual o disco está conectado antes de criar a captura instantânea. A interrupção da instância garante a integridade do conteúdo do disco no snapshot.
Crie um instantâneo do disco. Nomeie o instantâneo
image-snapshot
.gcloud compute disks snapshot DISK_NAME \ --snapshot-names image-snapshot
Substitua
DISK_NAME
pelo nome do disco que você deseja usar para criar o instantâneo. Você pode encontrar o nome do disco listando disks .Use o instantâneo
image-snapshot
para criar um novo disco denominadoimage-disk
executando o seguinte comando:gcloud compute disks create image-disk \ --source-snapshot image-snapshot
Crie um disco temporário denominado
temporary-disk
para armazenar seu arquivotar
e especifique oSIZE
do disco para ser pelo menos 50% maior que o disco de imagem.Você pode desconectar e excluir o disco posteriormente.
gcloud compute disks create temporary-disk \ --size SIZE
onde
SIZE
é o tamanho, em gigabytes ou terabytes, do disco temporário. Por exemplo, especifique100GB
para criar um disco de 100 gigabytes.Crie uma instância e habilite o escopo
storage-rw
na instância. Além disso, anexe oimage-disk
e otemporary-disk
à instância como discos secundários com atributos específicosdevice-name
. SubstituaVM_NAME
pelo nome da instância a ser criada.gcloud compute instances create VM_NAME \ --scopes storage-rw \ --disk name=image-disk,device-name=image-disk \ --disk name=temporary-disk,device-name=temporary-disk
Observe que você está transmitindo escopos de conta de serviço para poder fazer upload do arquivo para o Cloud Storage em etapas posteriores.
Revise os detalhes sobre como iniciar uma nova instância, se necessário.
Conecte-se à sua instância . Substitua
VM_NAME
pelo nome da instância à qual se conectar.gcloud compute ssh VM_NAME
Formate e monte o disco temporário. A formatação do disco exclui o conteúdo do disco temporário.
sudo mkdir /mnt/tmp
sudo mkfs.ext4 -F /dev/disk/by-id/google-temporary-disk
sudo mount -o discard,defaults /dev/disk/by-id/google-temporary-disk /mnt/tmp
Opcional: monte o disco de imagem e faça alterações adicionais antes de criar o arquivo
tar
. Por exemplo, você pode querer excluir quaisquer arquivos existentes do diretório/home
se não quiser que eles façam parte da sua imagem. Monte as partições do disco que você precisa modificar, modifique os arquivos no disco que você precisa alterar e desmonte o disco quando terminar.Crie um diretório onde você possa montar seu disco ou partição.
sudo mkdir /mnt/image-disk
Use o comando
ls
para determinar qual disco ou partição de disco você precisa montar.ls /dev/disk/by-id/
O comando imprime uma lista de IDs de disco e partições. Por exemplo, o disco a seguir possui uma tabela de partição com uma partição. O ID
google-image-disk
aponta para o disco completo a partir do qual você deseja criar uma imagem. O IDgoogle-image-disk-part1
aponta para a primeira partição deste disco. Monte a partição se precisar fazer alterações no disco e crie a imagem do disco completo.google-image-disk google-image-disk-part1
Monte o disco ou partição. Se o seu disco tiver uma tabela de partições, monte as partições individuais do seu disco. Por exemplo, monte
google-image-disk-part1
.sudo mount /dev/disk/by-id/google-image-disk-part1 /mnt/image-disk
Alternativamente, se o seu disco estiver formatado sem tabela de partição, monte o disco
google-image-disk
completo.sudo mount /dev/disk/by-id/google-image-disk /mnt/image-disk
Modifique os arquivos no diretório
/mnt/image-disk
para configurar os arquivos no disco. Por exemplo, você pode remover o arquivo/mnt/image-disk/home/[USER]/.ssh/authorized_keys
para proteger suas chaves SSH de serem compartilhadas.Depois de terminar de modificar os arquivos, desmonte o disco.
sudo umount /mnt/image-disk/
Crie um arquivo
tar
da sua imagem.Ao terminar de personalizar os arquivos no disco de imagem, crie um arquivo de disco bruto em seu disco temporário. O nome da imagem de disco bruta deve ser 'disk.raw':
sudo dd if=/dev/disk/by-id/google-image-disk of=/mnt/tmp/disk.raw bs=4096
Em seguida, crie o arquivo
tar.gz
:cd /mnt/tmp
sudo tar czvf myimage.tar.gz disk.raw
Este comando cria uma imagem da instância no seguinte local:
/mnt/tmp/myimage.tar.gz
Faça upload da imagem no Cloud Storage.
Para fazer upload do arquivo
tar
para o Cloud Storage, use a CLI do Google Cloud que vem pré-instalada na sua instância.Crie um bucket usando a CLI gcloud.
Certifique-se de revisar as diretrizes de nomenclatura de bucket e objeto antes de criar seu bucket. Em seguida, crie seu bucket usando o comando a seguir. Substitua
BUCKET_NAME
pelo nome do bucket a ser criado.me@example-instance:~$ gcloud storage buckets create gs://BUCKET_NAME
Copie seu arquivo para seu novo bucket. Substitua
BUCKET_NAME
pelo nome do bucket para o qual copiar o arquivo.me@example-instance:~$ gcloud storage cp /mnt/tmp/myimage.tar.gz gs://BUCKET_NAME
- Compartilhe imagens usando a função de usuário de imagem .
- Saiba mais sobre os métodos de importação disponíveis para o Compute Engine.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para 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.
Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.
Limitações e restrições
As seguintes limitações são aplicáveis ao processo de exportação de imagens.
Limitações gerais
Ao exportar uma imagem, uma sessão é criada na máquina da qual você está exportando a imagem. Esta sessão precisa permanecer ativa até que o processo de exportação seja concluído. Se a sessão terminar antes da conclusão do processo de exportação, recursos temporários, como discos temporários, instâncias de VM ou buckets de armazenamento, poderão não ser excluídos. Nesse caso, você deverá excluir esses recursos efêmeros manualmente.
O processo de exportação usa o Cloud Build para exportar uma imagem. Uma sessão do Cloud Build dura no máximo 24 horas. Se a sua imagem for muito grande e precisar de mais de 24 horas para ser exportada, você poderá exportar a imagem manualmente .
Limitações do VPC Service Controls
Para projetos protegidos com VPC Service Controls , use um dos seguintes métodos:
Exporte uma imagem com um único comando
Exportar uma imagem para o Cloud Storage
Você pode exportar suas imagens usando o console do Google Cloud , a CLI do Google Cloud ou REST .
Console
gcloud
A maneira preferencial de exportar uma imagem para o Cloud Storage é usar o comando
gcloud compute images export
. Este comando usa Daisy para encadear as várias etapas necessárias para exportar uma imagem. Ele pressupõe que você já criou uma imagem , por exemplo, com o comandogcloud compute images create
.Usando a CLI do Google Cloud, execute:
gcloud compute images export \ --destination-uri DESTINATION_URI \ --image IMAGE_NAME
Substitua o seguinte:
Por padrão, as imagens são exportadas no formato Compute Engine, que é um arquivo
disk.raw
compactado em tar e compactado. Para exportar imagens em outros formatos suportados pelo utilitário de imagem de disco QEMU, você pode usar o sinalizador--export-format
. Os formatos válidos incluemvmdk
,vhdx
,vpc
,vdi
eqcow2
.Exemplo
Por exemplo, o comando a seguir exporta uma imagem chamada
my-image
demy-project
para um bucket do Cloud Storage chamadomy-bucket
. Por padrão, a imagem é exportada como umdisk.raw file
e compactada no formato de arquivotar.gz
gcloud compute images export \ --destination-uri gs://my-bucket/my-image.tar.gz \ --image my-image \ --project my-project
Para sinalizações, consulte a documentação de referência
gcloud compute images export
.DESCANSAR
Envie uma solicitação
POST
para a API Cloud Build.POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds { "timeout": "7200s", "steps":[ { "args":[ "-timeout=7000s", "-source_image=SOURCE_IMAGE", "-client_id=api", "-format=IMAGE_FORMAT", "-destination_uri=DESTINATION_URI" ], "name":"gcr.io/compute-image-tools/gce_vm_image_export:release", "env":[ "BUILD_ID=$BUILD_ID" ] } ], "tags":[ "gce-daisy", "gce-daisy-image-export" ] }
Substitua o seguinte:
Para obter valores
args
adicionais que podem ser fornecidos, consulte a seção de sinalizadores opcionais da página do GitHub de exportação de imagem de VM .Resposta de exemplo
O exemplo de resposta a seguir é semelhante à saída retornada:
{ "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-10-02T18:59:13.393492020Z", "steps": [ { "name": "gcr.io/compute-image-tools/gce_vm_image_export:release", "env": [ "BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940" ], "args": [ "-timeout=7056s", "-source_image=my-image", "-client_id=api", "-format=vmdk", "-destination_uri=gs://my-bucket/my-exported-image.vmdk" ] } ], "timeout": "7200s", "projectId": "myproject-12345", "logsBucket": "gs://123456.cloudbuild-logs.googleusercontent.com", "options": { "logging": "LEGACY" }, "logUrl": "https://console.cloud.google.com/cloud-build/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=123456" } }
Existem algumas maneiras de monitorar sua construção:
Exportar uma imagem de um projeto usando uma conta de serviço personalizada do Compute Engine
Durante uma exportação de imagem, uma instância temporária de máquina virtual (VM) é criada em seu projeto. A ferramenta de exportação de imagens nesta VM temporária deve ser autenticada.
Uma conta de serviço é uma identidade anexada a uma VM. Os tokens de acesso à conta de serviço podem ser acessados por meio do servidor de metadados da instância e usados para autenticar a ferramenta de exportação de imagens na VM.
Por padrão, o processo de exportação usa o Compute Engine Service Agent padrão do projeto. No entanto, se a conta de serviço padrão do Compute Engine estiver desativada no seu projeto ou se você quiser usar uma conta de serviço personalizada do Compute Engine, será necessário criar uma conta de serviço e especificá-la para o processo de exportação.
Você pode exportar suas imagens usando a CLI do Google Cloud ou REST .
gcloud
Exemplo
Por exemplo, o comando a seguir exporta uma imagem chamada
my-image
demy-project
para um bucket do Cloud Storage chamadomy-bucket
com uma conta de serviço que tem o e-mailimage-export-service-account@proj-12345.iam.gserviceaccount.com
. Por padrão, a imagem é exportada como um arquivodisk.raw
e compactada no formato de arquivotar.gz
gcloud compute images export \ --destination-uri gs://my-bucket/my-image.tar.gz \ --image my-image \ --project my-project \ --compute-service-account image-export-service-account@proj-12345.iam.gserviceaccount.com
Para sinalizações, consulte a documentação de referência
gcloud compute images export
.DESCANSAR
Para obter valores
args
adicionais que podem ser fornecidos, consulte a seção de sinalizadores opcionais da página do GitHub de exportação de imagem de VM .Exportar uma imagem usando VPC compartilhada
Antes de exportar uma imagem que usa uma VPC compartilhada, você deve adicionar a função
compute.networkUser
à conta de serviço do Cloud Build. Para obter mais informações, consulte Conceder papéis necessários à conta de serviço do Cloud Build .Você pode exportar sua imagem usando a CLI do Google Cloud ou o REST .
gcloud
Use o comando
gcloud compute images export
para exportar sua imagem.gcloud compute images export \ --image IMAGE_NAME \ --destination-uri DESTINATION_URI \ --project PROJECT_ID \ --network NETWORK \ --subnet SUBNET \ --zone ZONE
Substitua o seguinte:
Por exemplo, o comando a seguir exporta uma imagem chamada
example-image
demy-project
para um bucket do Cloud Storage chamadomy-bucket
. Neste exemplo, a rede Virtual Private Cloud (my-shared-vp
) usa uma sub-rede personalizada (my-custom-subnet
). Por padrão, a imagem é exportada como um arquivodisk.raw
e compactada no formato de arquivotar.gz
Comando de amostra
gcloud compute images export \ --image example-image \ --destination-uri gs://my-bucket/my-image.tar.gz \ --project my-project \ --network projects/my-vpc-project/global/networks/my-shared-vpc \ --subnet projects/my-vpc-project/regions/us-west1/subnetworks/my-custom-subnet \ --zone us-west1-c
DESCANSAR
Crie e exporte uma imagem manualmente
Se os comandos
gcloud compute images create
egcloud compute images export
não atenderem aos seus requisitos, você poderá criar e exportar uma imagem manualmente de uma instância do Compute Engine. Este processo possui etapas discretas para primeiro criar uma imagem e depois exportá-la.No exemplo a seguir, observe que o disco criado é chamado image-disk .
Para criar e exportar uma imagem:
Você exportou seu arquivo para o Cloud Storage. Agora você pode compartilhar a imagem com outras pessoas ou usar o arquivo
tar
para adicionar uma nova imagem a um projeto do console do Google Cloud.O que vem a seguir
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-04-21 UTC.
-