Kundenspezifische Images erstellen, löschen und verwerfen

Sie können kundenspezifische Images von Bootlaufwerken erstellen und diese Images für die Erstellung neuer Instanzen verwenden. Dies ist ideal, wenn Sie ein persistentes Bootlaufwerk erstellt und angepasst haben, um einen bestimmten Zustand zu erreichen, und diesen Zustand für die Erstellung neuer Instanzen speichern müssen.

Alternativ dazu können Sie das Importwerkzeug für virtuelle Laufwerke verwenden, um Images von Bootlaufwerken aus vorhandenen Systemen in Compute Engine zu importieren und der Liste Ihrer benutzerdefinierten Images hinzuzufügen.

Hinweise

Ein kundenspezifisches Image erstellen

Diese Anleitung beschreibt, wie ein kundenspezifisches Image auf einer Linux-Instanz erstellt wird. Eine Anleitung zur Erstellung eines Windows-Images finden Sie unter Windows-Images erstellen.

Optional können Sie auch die Identitäts- und Zugriffsverwaltung verwenden, um das Image für andere Projekte freizugeben.

Instanz für ein Image vorbereiten

Sie können ein Image von einem Laufwerk erstellen, auch wenn es mit einer ausgeführten VM-Instanz verknüpft ist. Das Image wird jedoch zuverlässiger, wenn Sie die Instanz in einen Zustand versetzen, den das Image leichter erfassen kann. Mit einem der folgenden Prozesse bereiten Sie Ihr Bootlaufwerk für das Image vor:

  • Beenden Sie die Instanz, sodass sie herunterfahren und das Schreiben von Daten auf den nichtflüchtigen Speicher beenden kann.

  • Wenn Sie die Instanz vor dem Erstellen des Image nicht beenden können, sollten Sie die Anzahl der Schreibvorgänge auf dem Laufwerk minimieren und das Dateisystem synchronisieren.

    1. Halten Sie Anwendungen oder Prozesse des Betriebssystems an, die Daten auf den nichtflüchtigen Speicher schreiben.
    2. Leeren Sie die Anwendungsdaten auf das Laufwerk, falls erforderlich. MySQL enthält zum Beispiel eine FLUSH-Anweisung. Andere Anwendungen verfügen möglicherweise über ähnliche Prozesse.
    3. Beenden Sie das Schreiben von Daten auf den nichtflüchtigen Speicher durch Anwendungen.
    4. Führen Sie sudo sync aus.

Wenn die Instanz vorbereitet wurde, erstellen Sie das Image.

Image erstellen

Sie können folgende Quellen verwenden, um Laufwerk-Images zu erstellen:

  • einen nichtflüchtigen Speicher, selbst wenn dieser mit einer Instanz verknüpft ist
  • einen Snapshot eines nichtflüchtigen Speichers
  • ein anderes Image in Ihrem Projekt
  • ein Image, das von einem anderen Projekt freigegeben wird
  • ein komprimiertes RAW-Image in Google Cloud Storage

Console

  1. Gehen Sie in der Google Cloud Platform Console auf die Seite "Image erstellen".
    Zur Seite "Image erstellen"
  2. Geben Sie die Quelle an, von der Sie ein Image erstellen möchten. Dies kann ein nichtflüchtiger Speicher, ein Snapshot, ein anderes Image oder eine Datei des Formats disk.raw in Google Cloud Storage sein.
  3. Legen Sie die gewünschten Attribute des Images fest. Sie können zum Beispiel einen Image-Familiennamen für ihr Image angeben, um dieses Image als Teil einer Image-Familie zu organisieren.
  4. Wenn Sie ein Image von einem Laufwerk erstellen, das mit einem ausgeführten Image verknüpft ist, aktivieren Sie die Option "Erstellung von ausgeführter Instanz erzwingen". Damit bestätigen Sie, dass Sie das Image erstellen möchten, während die Instanz ausgeführt wird.
  5. Klicken Sie auf Erstellen, um das Image zu erstellen.

gcloud

Image von einem nichtflüchtigen Speicher erstellen:

gcloud compute images create [IMAGE_NAME] \
  --source-disk [SOURCE_DISK] \
  --source-disk-zone [ZONE] \
  --family [IMAGE_FAMILY] \
  [--force]

Dabei gilt:

  • [IMAGE_NAME] ist ein Name für das neue Image.
  • [SOURCE_DISK] ist das Laufwerk, von dem Sie das neue Image erstellen möchten.
  • [ZONE] ist die Zone, in der sich das Laufwerk befindet.
  • [IMAGE_FAMILY] ist ein optionales Flag, das angibt, zu welcher Image-Familie dieses Image gehört.
  • [--force] ist ein optionales Flag, dass Ihnen die Erstellung des Image von einer ausgeführten Instanz ermöglicht. Standardmäßig können Sie keine Images von ausgeführten Instanzen erstellen. Geben Sie dieses Flag nur an, wenn Sie sicher sind, dass Sie das Image erstellen möchten, während die Instanz ausgeführt wird.

Ein Image von einem anderen Image erstellen:

gcloud compute images create [IMAGE_NAME] \
  --source-image [SOURCE_IMAGE] \
  --source-image-project [IMAGE_PROJECT] \
  --family [IMAGE_FAMILY]

Dabei gilt:

  • [IMAGE_NAME] ist ein Name für das neue Image.
  • [SOURCE_IMAGE] ist das Image, aus dem Sie das neue Image erstellen möchten.
  • [IMAGE_PROJECT] ist ein optionaler Parameter, der angibt, in welchem Projekt sich das Quell-Image befindet. Verwenden Sie diesen Parameter, wenn Sie ein Image aus einem anderen Projekt kopieren möchten.
  • [IMAGE_FAMILY] ist ein optionales Flag, das angibt, zu welcher Image-Familie dieses neue Image gehört.

Image von einem Snapshot erstellen:

gcloud compute images create [IMAGE_NAME] \
  --source-snapshot [SOURCE_SNAPSHOT]

Dabei gilt:

  • [IMAGE_NAME] ist ein Name für das neue Image.
  • [SOURCE_SNAPSHOT] ist der Snapshot, von dem Sie das neue Image erstellen möchten.

API

Stellen Sie eine POST-Anfrage an die Methode images().insert. Fügen Sie dann in den Anfragetext eine URL ein, die auf das Quellobjekt verweist, aus dem Sie das Image erstellen möchten. Geben Sie URLs zu Ihren Ressourcen an und verwenden Sie dazu Ihre eigene Projekt-ID und Ihre Ressourcennamen.

Image von einem nichtflüchtigen Speicher erstellen:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images

{
  "name": "[IMAGE_NAME]",
  "sourceDisk": "/zones/[ZONE]/disks/[SOURCE_DISK]",
  "forceCreate": "[FORCE_CREATE]"
}

Dabei gilt:

  • [SOURCE_DISK] ist das Laufwerk, von dem Sie das Image erstellen möchten.
  • [ZONE] ist die Zone, in der sich das Quelllaufwerk befindet.
  • [PROJECT_ID] ist das Projekt, zu dem das Image gehört.
  • [IMAGE_NAME] ist ein Name für das neue Image, das Sie erstellen möchten.
  • [ZONE] ist die Zone, zu der das Laufwerk gehört.
  • [FORCE_CREATE] ist ein optionaler Parameter, der Ihnen ermöglicht, das Image von einer ausgeführten Instanz zu erstellen. Geben Sie den Wert TRUE nur an, wenn Sie sicher sind, dass Sie das Image von einer ausgeführten Instanz erstellen möchten. Wenn Sie diesen Parameter nicht angeben, lautet der Standardwert FALSE.

Ein Image von einem anderen Image erstellen:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images

{
  "name": "[IMAGE_NAME]",
  "sourceImage": "/global/images/[SOURCE_IMAGE]"
}

Dabei gilt:

  • [PROJECT_ID] ist das Projekt, zu dem das Image gehört.
  • [IMAGE_NAME] ist ein Name für das neue Image, das Sie erstellen möchten.
  • [SOURCE_IMAGE] ist das Image, von dem Sie das Image erstellen möchten.

Image von einem Snapshot erstellen:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images

{
  "name": "[IMAGE_NAME]",
  "sourceSnapshot": "/[SOURCE_PROJECT_ID]/global/snapshots/[SOURCE_SNAPSHOT]"
}

Dabei gilt:

  • [PROJECT_ID] ist das Projekt, zu dem das Image gehört.
  • [IMAGE_NAME] ist ein Name für das neue Image, das Sie erstellen möchten.
  • [SOURCE_SNAPSHOT] ist der Snapshot, von dem Sie das Image erstellen möchten.
  • [SOURCE_PROJECT_ID] ist eine optionale Variable, die angibt, in welchem Projekt sich der Snapshot befindet. Sie müssen die Zugriffsberechtigung für die Snapshot-Ressource in diesem Projekt haben.

Weitere Informationen zum Hinzufügen von Images finden Sie in der Image-Referenz.

Images verwerfen

Mit der Google Compute Engine können Sie ein kundenspezifisches Image verwerfen, dessen Inhaber Sie sind. Hierzu legen Sie den Ablaufstatus des Images fest. Jeder Ablaufstatus führt zu einer anderen Antwort des Servers. Dies hilft Ihnen dabei, Nutzer auf organisierte Art und Weise von nicht mehr unterstützten Images wegzuführen.

Führen Sie folgenden Befehl aus, um den Ablaufstatus eines Images festzulegen:

gcloud compute images deprecate [IMAGE] --state [STATE] --replacement [REPLACEMENT]

Dabei ist [IMAGE] der Name des Images, das verworfen werden soll.

Der Ablaufstatus kann einen der folgenden Werte annehmen:

  • DEPRECATED – Dieses Image wird als verworfen betrachtet. Wenn Nutzer versuchen, dieses Image zu verwenden, ist die Anfrage erfolgreich, aber Google Compute Engine gibt eine Warnung zurück. Neue Links auf dieses Image sind weiterhin erlaubt. Image-Familien verweisen nicht mehr auf dieses Image, selbst wenn es das Neueste in einer Familie ist.
  • OBSOLETE – Dieses Image ist veraltet und neue Nutzer können es nicht verwenden. Google Compute Engine gibt einen Fehler zurück, wenn Nutzer versuchen, dieses Image in ihren Anfragen zu verwenden. Existierende Links zu diesem Image sind weiterhin zulässig.
  • DELETED – Dieses Image wurde gelöscht, die Nutzer können es nicht verwenden. Google Compute Engine gibt einen Fehler zurück, wenn Nutzer versuchen, dieses Image zu verwenden.

Images löschen

Sie können nur benutzerdefinierte Images löschen, die Sie selbst oder jemand mit Projektzugang angelegt haben. Führen Sie den folgenden Befehl aus, um ein Image zu löschen:

gcloud compute images delete [IMAGE]

Dabei ist [IMAGE] der Name des Images, das gelöscht werden soll.

Imageversionen in einer Imagefamilie festlegen

Nutzen Sie Imagefamilien, um die Versionierung von Images zu vereinfachen. Wenn Sie ein Image zu einer Imagefamilie hinzufügen, wird dieses als neueste Imageversion festgelegt. Wenn Sie feststellen, dass Sie die Image-Familie auf eine frühere Image-Version zurücksetzen müssen, verwerfen Sie das neueste Image in der Familie.

Erstellen Sie z. B. ein Image mit dem Namen image-v1 als Teil einer Image-Familie.

gcloud

gcloud compute images create image-v1 \
          --source-disk disk-1 \
          --source-disk-zone us-central1-f \
          --family my-image-family

Die Image-Familie verweist auf image-v1. Fügen Sie der Familie ein zweites Image hinzu:

gcloud compute images create image-v2 \
          --source-disk disk-2 \
          --source-disk-zone us-central1-f \
          --family my-image-family

API

Stellen Sie eine POST-Anfrage an die images().insert-Methode. Geben Sie die Image-Familie im Anforderungstext an.

Ein Image mit einer Image-Familie erstellen

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images

{
  "name": "image-v2",
  "sourceDisk": "/zones/us-central1-f/disks/disk-2",
  "family":"my-image-family"
}

Die Image-Familie verweist jetzt auf image-v2, weil dies das neueste Image ist, das Sie der Familie hinzugefügt haben. Mit dem Befehl gcloud compute images describe-from-family können Sie sehen, auf welches Image eine Familie verweist. Beispiel:

gcloud

gcloud compute images describe-from-family my-image-family

family: my-image-family
id: '8904691942610171306'
kind: compute#image
name: image-v2
selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/images/image-v2
sourceDisk: https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/disks/disk-v2
sourceDiskId: '1677449456001963379'
sourceType: RAW
status: READY

API

Stellen Sie eine GET-Anforderung an die images.getFromFamily-Methode. Geben Sie die Image-Familie im Anforderungstext an.

GET https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images/family

{
  "resourceId":"my-image-family"
}

Wenn Sie feststellen, dass Sie die Image-Familie auf eine frühere Image-Version zurücksetzen müssen, so dass sie nicht mehr auf image-v2 verweist, verwerfen Sie image-v2, dann verweist die Familie wieder auf image-v1.

gcloud compute images deprecate image-v2 --state DEPRECATED --replacement image-v1

Prüfen Sie, ob die Image-Familie wieder auf image-v1 verweist:

gcloud compute images describe-from-family my-image-family

family: my-image-family
id: '2741732787056801255'
kind: compute#image
name: image-v1
selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/images/image-v1
sourceDisk: https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/disks/disk-v1
sourceDiskId: '1677449456001963379'
sourceType: RAW
status: READY

Gastbetriebssystem-Funktionen auf benutzerdefinierten Images aktivieren

Bei der Erstellung eines benutzerdefinierten Images können Sie den Parameter guestOsFeatures konfigurieren. Mit diesem Parameter werden eine oder mehrere Funktionen für VM-Instanzen aktiviert, die das Image für ihre Bootlaufwerke nutzen. Folgende Funktionen sind verfügbar:

  • MULTI_IP_SUBNET: Zur Konfiguration von Schnittstellen mit einer Netzmaske, die sich von /32 unterscheidet.
  • SECURE_BOOT – Ermöglicht das Aktivieren des sicheren UEFI-Startvorgangs, wodurch das Booten nicht signierter Software oder das Laden nicht signierter Treiber auf der VM-Instanz eingeschränkt wird. Nachdem Sie diesen Parameter festgelegt haben, können Sie die sichere Startfunktion während der Erstellung der VM-Instanz aktivieren.
  • UEFI_COMPATIBLE: Aktiviert den UEFI-Start, eine alternative Systemstartmethode. Die meisten öffentlichen Images verwenden den Bootloader GRUB als primäre Startmethode.
  • VIRTIO_SCSI_MULTIQUEUE: Aktiviert Multi-Queue-SCSI-Funktionen für lokale SSD-Geräte. Diese Option ist eine Alternative zu NVMe.
    • Für Linux-Images können Sie VIRTIO_SCSI_MULTIQUEUE auf Images mit Kernel-Versionen ab 3.17 aktivieren.
    • Für Windows-Images können Sie VIRTIO_SCSI_MULTIQUEUE auf Images mit Treiberversion ab 1.2.0.1621 aktivieren.
  • WINDOWS: Erforderlich für Windows Server-Images. Neuere öffentliche Images für Windows Server enthalten den Parameter WINDOWS zur Identifizierung als Windows-Image.

Sie können das gcloud-Befehlszeilentool oder die API verwenden, um Gastbetriebssystem-Funktionen auf benutzerdefinierten Images zu aktivieren.

gcloud

Erstellen Sie ein benutzerdefiniertes Image aus einem Ihrer bestehenden benutzerdefinierten Images, aber schließen Sie zusätzlich das Flag --guest-os-features ein.

gcloud compute images create [IMAGE_NAME] \
  --source-image [SOURCE_IMAGE] \
  --source-image-project [IMAGE_PROJECT] \
  --guest-os-features="[FEATURE_ID],..."

Dabei gilt:

  • [IMAGE_NAME] ist ein Name für das neue Image, das Sie erstellen möchten.
  • [SOURCE_IMAGE] ist das Image, aus dem Sie das neue Image erstellen möchten.
  • [IMAGE_PROJECT] ist ein optionaler Parameter, der angibt, in welchem Projekt sich das Quell-Image befindet. Verwenden Sie diesen Parameter, wenn Sie ein Image aus einem anderen Projekt kopieren möchten.
  • [FEATURE_ID] ist eine ID für eine der verfügbaren Gastbetriebssystem-Funktionen. Sie können mehrere Funktionen als eine durch Kommas getrennte Liste angeben.

API

Stellen Sie eine POST-Anfrage an die Methode images().insert. Fügen Sie dann in den Anfragetext eine URL ein, die auf das Quellobjekt verweist, aus dem Sie das Image erstellen möchten. Ersetzen Sie Projekt und Zone durch Ihre eigene Projekt-ID und die Zone des nichtflüchtigen Speichers:

Image von einem nichtflüchtigen Speicher erstellen:

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/images

{
 "name": "[IMAGE_NAME]",
 "sourceImage": "projects/[IMAGE_PROJECT]/global/images/[SOURCE_IMAGE]",
 "guestOsFeatures": [
  {
   "type": "[FEATURE_ID]"
  }
 ]
}

Dabei gilt:

  • [IMAGE_NAME] ist ein Name für das neue Image, das Sie erstellen möchten.
  • [SOURCE_IMAGE] ist das Image, aus dem Sie das neue Image erstellen möchten.
  • [IMAGE_PROJECT] ist ein Parameter, der angibt, in welchem Projekt sich das Quell-Image befindet.
  • [FEATURE_ID] ist eine ID für eine der verfügbaren Gastbetriebssystem-Funktionen. Sie können mehrere Funktionen als eine durch Kommas getrennte Liste angeben.

Weitere Informationen zum Hinzufügen von Images finden Sie in der Image-Referenz.

Weitere Informationen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Compute Engine-Dokumentation