Benutzerdefiniertes Image zu Cloud Storage exportieren


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.

Benutzerdefinierte Images erstellen und wiederverwenden
Abbildung 1. Beispiele für das Erstellen und Wiederverwenden von benutzerdefinierten Images

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 und projects/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

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. 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:

  • aus demselben Projekt exportieren, in dem sich das Bild befindet
  • das Image manuell exportieren

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

  1. Rufen Sie in der Google Cloud Console die Seite Images auf.

    Zur Seite „Images“

  2. 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.

  3. Klicken Sie auf der Image-Detailseite auf Exportieren, um die Seite Image exportieren zu öffnen.

  4. Wählen Sie auf der Seite Image exportieren das Exportformat des Images aus.

  5. Klicken Sie auf Durchsuchen, um den Cloud Storage-Speicherort auszuwählen, zu dem Sie das Image exportieren möchten.

  6. 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.

  7. 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.

  8. Nachdem Sie einen Cloud Storage-Speicherort ausgewählt und einen Dateinamen für das Image eingegeben haben, klicken Sie auf Auswählen.

  9. 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.

  10. Gehen Sie zur Seite Storage, um auf das exportierte Image zuzugreifen.

    Storage öffnen

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 Befehl gcloud 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:

  • 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.

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 sind vmdk, vhdx, vpc, vdi und qcow2.

Beispiel

Mit dem folgenden Befehl wird z. B. ein Image mit dem Namen my-image von my-project in einen Cloud Storage-Bucket mit dem Namen my-bucket exportiert. Standardmäßig wird das Image als disk.raw file exportiert und in das Dateiformat tar.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:

  • 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 sind vmdk, vhdx, vpc, vdi und qcow2.
  • 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

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:

  • Ausführen einer projects.builds.get-Anfrage mit der zurückgegebenen build-id
  • Prüfen der Logs, die unter der bereitgestellten logUrl gehostet werden

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

  1. 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.

  2. 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.

Beispiel

Der folgende Befehl exportiert beispielsweise ein Image mit dem Namen my-image aus my-project in einen Cloud Storage-Bucket mit dem Namen my-bucket mit einem Dienstkonto mit der E-Mail-Adresse image-export-service-account@proj-12345.iam.gserviceaccount.com. Standardmäßig wird das Image als disk.raw-Datei exportiert und im Dateiformat tar.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

  1. 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.

  2. 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 sind vmdk, vhdx, vpc, vdi und qcow2.
    • 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.

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:

  • 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 das SUBNET beispielsweise in der Region us-west1 liegt, muss die Exportzone us-west1-a, us-west1-b oder us-west1-c sein.

    Wenn Sie SUBNET angegeben haben, müssen Sie auch die Zone angeben.

Mit dem folgenden Befehl wird z. B. ein Image mit dem Namen example-image von my-project in einen Cloud Storage-Bucket mit dem Namen my-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 als disk.raw-Datei exportiert und in das Dateiformat tar.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

  1. Fügen Sie das Image zu Cloud Storage hinzu.

  2. 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 sind vmdk, vhdx, vpc, vdi und qcow2.
    • 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 das SUBNET beispielsweise in der Region us-west1 liegt, muss die Exportzone us-west1-a, us-west1-b oder us-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.

Images manuell erstellen und exportieren

Wenn die Befehle gcloud compute images create und gcloud 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:

  1. 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.

  2. 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.

  3. Verwenden Sie den Snapshot image-snapshot, um ein neues Laufwerk mit dem Namen image-disk zu erstellen. Führen Sie dazu den folgenden Befehl aus:

    gcloud compute disks create image-disk \
        --source-snapshot image-snapshot
  4. Erstellen Sie für Ihre tar-Datei ein temporäres Laufwerk mit dem Namen temporary-disk und legen Sie die SIZE 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 beispielsweise 100GB an, um ein Laufwerk von 100 Gigabyte zu erstellen.

  5. Erstellen Sie eine Instanz und aktivieren Sie in der Instanz den Gültigkeitsbereich storage-rw. Hängen Sie außerdem image-disk und temporary-disk als sekundäre Laufwerke mit spezifischen device-name-Attributen an die Instanz an. Ersetzen Sie dabei VM_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.

  6. 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
  7. 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
  8. 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.

    1. Erstellen Sie ein Verzeichnis zum Bereitstellen Ihres Laufwerks oder Ihrer Partition.

      sudo mkdir /mnt/image-disk
    2. 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 ID google-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
      
    3. 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
    4. 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.

    5. Heben Sie die Bereitstellung des Laufwerks auf, nachdem Sie die Dateien angepasst haben.

      sudo umount /mnt/image-disk/
  9. 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

  10. 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.

    1. 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
    2. 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

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