Wenn Sie Daten eines Compute Engine-Bootlaufwerks aus einem Compute Engine-Projekt heraus verschieben müssen, können Sie ein Bootlaufwerk-Image als tar.gz
-Datei in Cloud Storage exportieren. Wenn Sie ein Image eines nichtflüchtigen Speichers erstellen müssen, das beim Erstellen neuer nichtflüchtiger Speicher in Compute Engine verwendet werden soll, lesen Sie Benutzerdefiniertes Image erstellen.
Sie können ein benutzerdefiniertes Image sichern oder freigeben. Exportieren Sie es dafür zu Cloud Storage. Diese Methode ist ideal, um einzelne Images für Projekte freizugeben, die keinen Zugriff auf Ihre Images haben. Alternativ können Sie Images freigeben, indem Sie der Compute Engine-Image-Nutzerrolle das Image oder das Projekt zuweisen, das sie enthält.
Das folgende Diagramm zeigt einige typische Arbeitsabläufe, um ein benutzerdefiniertes Image zu erstellen und wiederzuverwenden.
Hinweise
- Lesen Sie die Dokumentation zu Images.
- Wenn für das Projekt, aus dem Sie das Image exportieren möchten, eine Trusted Image-Richtlinie definiert ist, fügen Sie
projects/compute-image-import
undprojects/compute-image-tools
zur Liste der zulässigen Herausgeber hinzu. - Informationen zu den Anforderungen für das Exportieren von Images finden Sie unter Voraussetzungen für den Import und Export von VM-Images.
-
Richten Sie die Authentifizierung ein, falls Sie dies noch nicht getan haben.
Bei der Authentifizierung wird Ihre Identität für den Zugriff auf Google Cloud-Dienste und APIs überprüft.
Zur Ausführung von Code oder Beispielen aus einer lokalen Entwicklungsumgebung können Sie sich bei Compute Engine authentifizieren. Wählen Sie dazu eine der folgenden Optionen aus:
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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- aus demselben Projekt exportieren, in dem sich das Bild befindet
- das Image manuell exportieren
Rufen Sie in der Google Cloud Console die Seite Images auf.
Klicken Sie auf den Namen des Images, das Sie exportieren möchten, um die Image-Detailseite aufzurufen. Sie können keine von Google bereitgestellten öffentlichen Images exportieren. Sie können nur Images exportieren, die Sie zuvor erstellt oder importiert haben.
Klicken Sie auf der Image-Detailseite auf Exportieren, um die Seite Image exportieren zu öffnen.
Wählen Sie auf der Seite Image exportieren das Exportformat des Images aus.
Klicken Sie auf Durchsuchen, um den Cloud Storage-Speicherort auszuwählen, zu dem Sie das Image exportieren möchten.
Wählen Sie einen vorhandenen Cloud Storage-Speicherort für den Export des Images aus. Oder folgen Sie der Anleitung zum Erstellen eines neuen Cloud Storage-Buckets und geben Sie dann einen Namen für den neuen Cloud Storage-Bucket ein.
Wählen Sie nach der Auswahl des Cloud Storage-Speicherorts einen Dateinamen für das exportierte Image aus. Sie können entweder den standardmäßigen Dateinamen oder einen eigenen verwenden.
Nachdem Sie einen Cloud Storage-Speicherort ausgewählt und einen Dateinamen für das Image eingegeben haben, klicken Sie auf Auswählen.
Klicken Sie auf der Seite Image exportieren auf Exportieren. Nachdem Sie Exportieren ausgewählt haben, zeigt die Cloud Console den Verlauf des Imageexports an, unter dem Sie den Exportvorgang des Images ansehen können. Wenn Sie weitere Informationen zum Image-Exportvorgang wünschen, klicken Sie auf die Cloud Build-ID, um die Seite Image-Exportdetails aufzurufen. Dort können Sie das Image-Exportlog ansehen und herunterladen.
Gehen Sie zur Seite Storage, um auf das exportierte Image zuzugreifen.
DESTINATION_URI
ist der Ziel-URI in Cloud Storage für die exportierte Image-Datei.IMAGE_NAME
ist der Name des Laufwerk-Images, das exportiert werden soll.PROJECT_ID
ist die ID des Projekts, das das zu exportierende Image enthält.SOURCE_IMAGE
ist der Name des Image, das exportiert werden soll.IMAGE_FORMAT
ist das Format des exportierten Image. Gültige Formate sindvmdk
,vhdx
,vpc
,vdi
undqcow2
.DESTINATION_URI
ist der URI des Speicherorts in Cloud Storage, in den Sie die Bilddatei exportieren möchten. Beispiel:gs://my-bucket/my-exported-image.vmdk
- Ausführen einer projects.builds.get-Anfrage mit der zurückgegebenen
build-id
- Prüfen der Logs, die unter der bereitgestellten
logUrl
gehostet werden Erstellen Sie ein Dienstkonto und weisen Sie die Mindestrollen zu. Weitere Informationen zum Erstellen von Dienstkonten finden Sie unter Dienstkonten erstellen und verwalten.
Dem angegebenen Compute Engine-Dienstkonto müssen mindestens die folgenden Rollen zugewiesen sein:
roles/compute.storageAdmin
roles/storage.objectAdmin
Weitere Informationen finden Sie unter Compute Engine-Dienstkonto die erforderlichen Rollen zuweisen.
Verwenden Sie den Befehl
gcloud compute images export
, um das Image zu exportieren.gcloud compute images export \ --destination-uri DESTINATION_URI \ --image IMAGE_NAME \ --compute-service-account SERVICE_ACCOUNT_EMAIL
Dabei gilt:
DESTINATION_URI
ist der Ziel-URI in Cloud Storage für die exportierte Image-Datei.IMAGE_NAME
ist der Name des Laufwerk-Images, das exportiert werden soll.SERVICE_ACCOUNT_EMAIL
ist die E-Mail-Adresse des Compute Engine-Dienstkontos, das im vorherigen Schritt erstellt wurde.
Erstellen Sie ein Dienstkonto und weisen Sie die Mindestrollen zu. Weitere Informationen zum Erstellen von Dienstkonten finden Sie unter Dienstkonten erstellen und verwalten.
Dem angegebenen Compute Engine-Dienstkonto müssen mindestens die folgenden Rollen zugewiesen sein:
roles/compute.storageAdmin
roles/storage.objectAdmin
Weitere Informationen finden Sie unter Erforderliche Rollen für das Compute Engine-Dienstkonto zuweisen.
Erstellen Sie in der API eine
POST
-Anfrage an die Cloud Build API.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" ] }
Dabei gilt:
PROJECT_ID
ist die ID des Projekts, das das zu exportierende Image enthält.SOURCE_IMAGE
ist der Name des Image, das exportiert werden soll.IMAGE_FORMAT
ist das Format des exportierten Images. Gültige Formate sindvmdk
,vhdx
,vpc
,vdi
undqcow2
.DESTINATION_URI
ist der URI des Speicherorts in Cloud Storage, in den Sie die Bilddatei exportieren möchten. Beispiel:gs://my-bucket/my-exported-image.vmdk
SERVICE_ACCOUNT_EMAIL
ist die E-Mail-Adresse des Compute Engine-Dienstkontos, das im vorherigen Schritt erstellt wurde.
IMAGE_NAME
ist der Name des Image, das exportiert werden soll.DESTINATION_URI
ist der URI des Speicherorts in Cloud Storage, in den Sie die Bilddatei exportieren möchten.PROJECT_ID
ist die ID des Projekts, in dem sich das Image befindet.NETWORK
ist der vollständige Pfad zu einem freigegebenen VPC-Netzwerk. Beispiel:projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME
.SUBNET
: Optional. Der vollständige Pfad zu einem freigegebenen VPC-Subnetzwerk. Beispiel:projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
.Die Angabe dieses Modus hängt vom VPC-Netzwerkmodus ab.
- Wenn das VPC-Netzwerk den Legacy-Modus verwendet, geben Sie kein Subnetz an.
- Wenn das VPC-Netzwerk den automatischen Modus verwendet, ist die Angabe des Subnetzes optional.
- Wenn das VPC-Netzwerk den benutzerdefinierten Modus verwendet, muss dieses Feld angegeben werden.
ZONE
: Optional. Die Zone, die für den Export verwendet werden soll. Diese Zone muss mit der Region des Subnetzes übereinstimmen. Wenn dasSUBNET
beispielsweise in der Regionus-west1
liegt, muss die Exportzoneus-west1-a
,us-west1-b
oderus-west1-c
sein.Wenn Sie
SUBNET
angegeben haben, müssen Sie auch die Zone angeben.Fügen Sie das Image zu Cloud Storage hinzu.
Erstellen Sie in der API eine
POST
-Anfrage an die Cloud Build API.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" ] }
Dabei gilt:
PROJECT_ID
ist die ID des Projekts, das das zu exportierende Image enthält.SOURCE_IMAGE
ist der Name des Image, das exportiert werden soll.IMAGE_FORMAT
ist das Format des exportierten Image. Gültige Formate sindvmdk
,vhdx
,vpc
,vdi
undqcow2
.DESTINATION_URI
ist der URI des Speicherorts in Cloud Storage, in den Sie die Bilddatei exportieren möchten. Beispiel:gs://my-bucket/my-exported-image.vmdk
NETWORK
ist der vollständige Pfad zu einem freigegebenen VPC-Netzwerk. Beispiel:projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME
SUBNET
ist der vollständige Pfad zu einem freigegebenen VPC-Subnetzwerk. Beispiel:projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
Die Angabe dieses Modus hängt vom VPC-Netzwerkmodus ab.
- Wenn das VPC-Netzwerk den Legacy-Modus verwendet, geben Sie kein Subnetz an.
- Wenn das VPC-Netzwerk den automatischen Modus verwendet, ist die Angabe des Subnetzes optional.
- Wenn das VPC-Netzwerk den benutzerdefinierten Modus verwendet, muss dieses Feld angegeben werden.
ZONE
ist die Zone, die für den Export verwendet werden soll. Diese Zone muss mit der Region des Subnetzes übereinstimmen. Wenn dasSUBNET
beispielsweise in der Regionus-west1
liegt, muss die Exportzoneus-west1-a
,us-west1-b
oderus-west1-c
sein.In den meisten Fällen ist die Angabe einer Zone optional. Wenn
SUBNET
angegeben ist, muss die Zone angegeben werden.
Weitere
args
-Werte, die Sie angeben können, finden Sie im Bereich zu optionalen Flags auf der GitHub-Seite für den VM-Image-Export.Optional: Beenden Sie die Instanz, der das Laufwerk hinzugefügt wurde, bevor Sie einen Snapshot erstellen. Durch Beenden der Instanz wird die Integrität der Laufwerksinhalte im Snapshot sichergestellt.
Erstellen Sie einen Snapshot des Laufwerks. Geben Sie dem Snapshot den Namen
image-snapshot
.gcloud compute disks snapshot DISK_NAME \ --snapshot-names image-snapshot
Ersetzen Sie
DISK_NAME
durch den Namen des Laufwerks, das Sie zum Erstellen des Snapshots verwenden möchten. Sie können den Namen des Laufwerks ermitteln, indem Sie Laufwerke auflisten.Verwenden Sie den Snapshot
image-snapshot
, um ein neues Laufwerk mit dem Namenimage-disk
zu erstellen. Führen Sie dazu den folgenden Befehl aus:gcloud compute disks create image-disk \ --source-snapshot image-snapshot
Erstellen Sie für Ihre
tar
-Datei ein temporäres Laufwerk mit dem Namentemporary-disk
und legen Sie dieSIZE
so fest, dass das Laufwerk mindestens 50 % größer als das Image-Laufwerk ist.Sie können das Laufwerk anschließend trennen und löschen.
gcloud compute disks create temporary-disk \ --size SIZE
Dabei ist
SIZE
die Größe des temporären Laufwerks in Gigabyte oder Terabyte. Geben Sie beispielsweise100GB
an, um ein Laufwerk von 100 Gigabyte zu erstellen.Erstellen Sie eine Instanz und aktivieren Sie in der Instanz den Gültigkeitsbereich
storage-rw
. Hängen Sie außerdemimage-disk
undtemporary-disk
als sekundäre Laufwerke mit spezifischendevice-name
-Attributen an die Instanz an. Ersetzen Sie dabeiVM_NAME
durch den Namen der zu erstellenden Instanz.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
Achten Sie darauf, die Dienstkontenbereiche zu übertragen, damit Sie Ihre Datei später in Cloud Storage hochladen können.
Weitere Informationen finden Sie bei Bedarf in der Dokumentation Eine neue Instanz starten.
Stellen Sie eine Verbindung zur Instanz her. Ersetzen Sie dabei
VM_NAME
durch den Namen der Instanz, zu der eine Verbindung hergestellt werden soll.gcloud compute ssh VM_NAME
Formatieren Sie ein neues temporäres Laufwerk und stellen Sie es bereit. Der Formatierungsvorgang löscht alle Inhalte des temporären Laufwerks.
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
Optional: Stellen Sie das Image-Laufwerk bereit und nehmen Sie weitere Änderungen vor, bevor Sie die
tar
-Datei erstellen. Wenn Sie beispielsweise nicht möchten, dass die im Verzeichnis/home
vorhandenen Dateien Teil Ihres Images sind, müssen Sie diese löschen. Stellen Sie die Partitionen bereit, die Sie anpassen möchten, und ändern Sie die gewünschten Daten auf dem Laufwerk. Anschließend heben Sie die Bereitstellung des Laufwerks auf.Erstellen Sie ein Verzeichnis zum Bereitstellen Ihres Laufwerks oder Ihrer Partition.
sudo mkdir /mnt/image-disk
Verwenden Sie den Befehl
ls
, um festzustellen, welches Laufwerk oder welche Partition Sie bereitstellen müssen.ls /dev/disk/by-id/
Der Befehl gibt eine Liste von Laufwerk-IDs und Partitionen aus. Das folgende Laufwerk verfügt beispielsweise über eine Partitionstabelle mit einer Partition. Die ID
google-image-disk
verweist auf das komplette Laufwerk, von dem Sie ein Image erstellen möchten. Die IDgoogle-image-disk-part1
verweist auf die erste Partition dieses Laufwerks. Stellen Sie die Partition bereit, wenn Sie Änderungen am Laufwerk vornehmen wollen, und erstellen Sie anschließend ein Image des kompletten Laufwerks.google-image-disk google-image-disk-part1
Stellen Sie das Laufwerk oder die Partition bereit. Wenn Ihr Laufwerk über eine Partitionstabelle verfügt, stellen Sie die einzelnen Partitionen Ihres Laufwerks bereit. Beispiel:
google-image-disk-part1
.sudo mount /dev/disk/by-id/google-image-disk-part1 /mnt/image-disk
Wenn Ihr Laufwerk im RAW-Format formatiert ist und keine Partitionstabelle besitzt, stellen Sie das komplette Laufwerk
google-image-disk
bereit.sudo mount /dev/disk/by-id/google-image-disk /mnt/image-disk
Passen Sie die Dateien im Verzeichnis
/mnt/image-disk
an, um die Dateien auf dem Laufwerk zu konfigurieren. Unter Umständen möchten Sie die Datei/mnt/image-disk/home/[USER]/.ssh/authorized_keys
entfernen, damit Ihre SSH-Schlüssel nicht freigegeben werden.Heben Sie die Bereitstellung des Laufwerks auf, nachdem Sie die Dateien angepasst haben.
sudo umount /mnt/image-disk/
Erstellen Sie eine
tar
-Datei aus Ihrem Image.Wenn Sie mit der Anpassung Ihrer Dateien fertig sind, erstellen Sie auf Ihrem temporären Laufwerk eine Raw-Disk-Datei. Die Bezeichnung des Raw-Disk-Images muss 'disk.raw‘ lauten:
sudo dd if=/dev/disk/by-id/google-image-disk of=/mnt/tmp/disk.raw bs=4096
Erstellen Sie dann die Datei
tar.gz
:cd /mnt/tmp
sudo tar czvf myimage.tar.gz disk.raw
Mit diesem Befehl wird an folgendem Speicherort ein Image der Instanz erstellt:
/mnt/tmp/myimage.tar.gz
Image in Cloud Storage hochladen
Verwenden Sie zum Hochladen der
tar
-Datei in Cloud Storage die Google Cloud CLI, die auf Ihrer Instanz vorinstalliert ist.Erstellen Sie einen Bucket mit der gcloud CLI.
Lesen Sie sich vor dem Erstellen des Buckets die Benennungsrichtlinien für Buckets durch. Erstellen Sie anschließend Ihren Bucket mit dem folgenden Befehl: Ersetzen Sie dabei
BUCKET_NAME
durch den Namen des zu erstellenden Buckets.me@example-instance:~$ gcloud storage buckets create gs://BUCKET_NAME
Kopieren Sie die Datei in Ihren neuen Bucket. Ersetzen Sie dabei
BUCKET_NAME
durch den Namen des Buckets, in den die Datei kopiert werden soll.me@example-instance:~$ gcloud storage cp /mnt/tmp/myimage.tar.gz gs://BUCKET_NAME
- Images durch Zuweisen der Image-Nutzerrolle freigeben
- Informationen zu den für Compute Engine verfügbaren Importmethoden
REST
Verwenden Sie die von der gcloud CLI bereitgestellten Anmeldedaten, um die REST API-Beispiele auf dieser Seite in einer lokalen Entwicklungsumgebung zu verwenden.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Weitere Informationen finden Sie unter Für die Verwendung von REST authentifizieren in der Dokumentation zur Google Cloud-Authentifizierung.
Limits und Einschränkungen
Für den Bildexport gelten die folgenden Einschränkungen.
Allgemeine Beschränkungen
Wenn Sie ein Image exportieren, wird auf dem Computer, von dem Sie das Image exportieren, eine Sitzung erstellt. Diese Sitzung muss aktiv bleiben, bis der Exportvorgang abgeschlossen ist. Wenn die Sitzung vor Abschluss des Exportvorgangs beendet wird, werden sitzungsspezifische Ressourcen wie temporäre Laufwerke, VM-Instanzen oder Speicher-Buckets möglicherweise nicht gelöscht. In diesem Fall müssen Sie diese sitzungsspezifischen Ressourcen manuell löschen.
Beim Exportieren wird Cloud Build verwendet. Eine Cloud Build-Sitzung dauert maximal 24 Stunden. Wenn das Bild sehr groß ist und der Export mehr als 24 Stunden dauert, können Sie es manuell exportieren.
Einschränkungen von VPC Service Controls
Bei Projekten, die durch VPC Service Controls geschützt werden, können Sie eine der folgenden Methoden verwenden:
Images mit einem Befehl exportieren
Bild nach Cloud Storage exportieren
Sie können Ihre Images entweder mit der Google Cloud Console, der Google Cloud CLI oder REST exportieren.
Console
gcloud
In der Regel ist es am besten, ein Image mit dem Befehl
gcloud compute images export
zu Cloud Storage zu exportieren. Dieser Befehl verwendet Daisy, um die zahlreichen für den Export eines Images erforderlichen Schritte zu verknüpfen. Bei dem Befehl wird davon ausgegangen, dass Sie bereits ein Image erstellt haben, z. B. mit dem Befehlgcloud compute images create
.Führen Sie über die Google Cloud CLI folgenden Befehl aus:
gcloud compute images export \ --destination-uri DESTINATION_URI \ --image IMAGE_NAME
Dabei gilt:
Standardmäßig werden Images im Compute Engine-Format exportiert: eine mit gzip komprimierte
disk.raw
-Datei mit der Erweiterung "tar". Wenn Sie Images in andere Formate exportieren möchten, die vom Laufwerk-Image-Dienstprogramm QEMU unterstützt werden, können Sie das Flag--export-format
verwenden. Gültige Formate sindvmdk
,vhdx
,vpc
,vdi
undqcow2
.Beispiel
Mit dem folgenden Befehl wird z. B. ein Image mit dem Namen
my-image
vonmy-project
in einen Cloud Storage-Bucket mit dem Namenmy-bucket
exportiert. Standardmäßig wird das Image alsdisk.raw file
exportiert und in das Dateiformattar.gz
komprimiert.gcloud compute images export \ --destination-uri gs://my-bucket/my-image.tar.gz \ --image my-image \ --project my-project
Informationen zu Flags finden Sie in der Referenzdokumentation zu
gcloud compute images export
.REST
Senden Sie eine
POST
-Anfrage an die Cloud Build API.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" ] }
Dabei gilt:
Weitere
args
-Werte, die Sie angeben können, finden Sie im Bereich zu optionalen Flags auf der GitHub-Seite für den VM-Image-Export.Beispielantwort
Die folgende Beispielantwort sieht ungefähr so aus wie die zurückgegebene Ausgabe:
{ "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" } }
Es gibt mehrere Möglichkeiten, den Build zu überwachen:
Image aus einem Projekt mithilfe eines benutzerdefinierten Compute Engine-Dienstkontos exportieren
Während eines Image-Exports wird in Ihrem Projekt eine temporäre VM-Instanz erstellt. Das Image-Export-Tool auf dieser temporären VM muss authentifiziert sein.
Ein Dienstkonto ist eine Identität, die mit einer VM verbunden ist. Auf Zugriffstoken für Dienstkonten kann über den Instanzmetadatenserver zugegriffen und zur Authentifizierung des Image-Export-Tools auf der VM verwendet werden.
Beim Exportieren wird standardmäßig der Compute Engine-Dienst-Agent des Projekts verwendet. Wenn jedoch das Compute Engine-Standarddienstkonto in Ihrem Projekt deaktiviert ist oder Sie ein benutzerdefiniertes Compute Engine-Dienstkonto verwenden möchten, müssen Sie ein Dienstkonto erstellen und für den Exportvorgang angeben.
Sie können Ihre Images entweder mit der Google Cloud CLI oder mit REST exportieren.
gcloud
Beispiel
Der folgende Befehl exportiert beispielsweise ein Image mit dem Namen
my-image
ausmy-project
in einen Cloud Storage-Bucket mit dem Namenmy-bucket
mit einem Dienstkonto mit der E-Mail-Adresseimage-export-service-account@proj-12345.iam.gserviceaccount.com
. Standardmäßig wird das Image alsdisk.raw
-Datei exportiert und im Dateiformattar.gz
komprimiert.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
Informationen zu Flags finden Sie in der Referenzdokumentation zu
gcloud compute images export
.REST
Weitere
args
-Werte, die Sie angeben können, finden Sie im Bereich zu optionalen Flags auf der GitHub-Seite für den VM-Image-Export.Images mit freigegebene VPC exportieren
Bevor Sie ein Image exportieren, das eine freigegebene VPC verwendet, müssen Sie dem Cloud Build-Dienstkonto die Rolle
compute.networkUser
hinzufügen. Weitere Informationen finden Sie unter Erforderliche Rollen für das Cloud Build-Dienstkonto zuweisen.Sie können das Image entweder mit der Google Cloud CLI oder mit REST exportieren.
gcloud
Exportieren Sie das Image mit dem Befehl
gcloud compute images export
.gcloud compute images export \ --image IMAGE_NAME \ --destination-uri DESTINATION_URI \ --project PROJECT_ID \ --network NETWORK \ --subnet SUBNET \ --zone ZONE
Dabei gilt:
Mit dem folgenden Befehl wird z. B. ein Image mit dem Namen
example-image
vonmy-project
in einen Cloud Storage-Bucket mit dem Namenmy-bucket
exportiert. In diesem Beispiel verwendet das VPC-Netzwerk (Virtual Private Cloud)my-shared-vp
ein benutzerdefiniertes Subnetz (my-custom-subnet
). Standardmäßig wird das Image alsdisk.raw
-Datei exportiert und in das Dateiformattar.gz
komprimiert.Beispielbefehl
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
REST
Images manuell erstellen und exportieren
Wenn die Befehle
gcloud compute images create
undgcloud compute images export
Ihren Anforderungen nicht gerecht werden, können Sie ein Image manuell über eine Compute Engine-Instanz erstellen und exportieren. Dieser Vorgang besteht aus einzelnen Schritten. Zuerst wird ein Image erstellt und dann das Image exportiert.Beachten Sie im folgenden Beispiel, dass das erstellte Laufwerk als image-disk bezeichnet wird.
So erstellen und exportieren Sie ein Image:
Sie haben Ihre Datei zu Cloud Storage exportiert. Sie können das Image nun für andere Nutzer freigeben oder die
tar
-Datei verwenden, um einem Google Cloud Console-Projekt ein neues Image hinzuzufügen.Nächste Schritte
Sofern nicht anders angegeben, sind die Inhalte dieser Seite unter der Creative Commons Attribution 4.0 License und Codebeispiele unter der Apache 2.0 License lizenziert. Weitere Informationen finden Sie in den Websiterichtlinien von Google Developers. Java ist eine eingetragene Marke von Oracle und/oder seinen Partnern.
Zuletzt aktualisiert: 2024-12-22 (UTC).
-