カスタム イメージの作成、削除、使用中止

ブートディスクのカスタム イメージを作成し、それらのイメージを使用して新しいインスタンスを作成できます。これは、永続ブートディスクを作成して特定の状態に変更し、その状態を保存して新規インスタンスを作成する場合に理想的です。

あるいは、既存のシステムから Compute Engine にブートディスクのイメージをインポートして、それらをカスタム イメージのリストに追加することもできます。

始める前に

カスタム イメージの作成

ここでは、Linux インスタンスでカスタム イメージを作成する方法を説明します。Windows イメージの作成手順については、Windows イメージを作成するを参照してください。

必要に応じて、Identity and Access Management(IAM)を使用してイメージを他のプロジェクトと共有することもできます。

イメージに対するインスタンスの準備

実行中の VM インスタンスにディスクが接続されている場合でも、そのようなディスクからイメージを作成できます。ただし、イメージをキャプチャしやすい状態にインスタンスを調整することで、イメージの信頼性が向上します。ブートディスクをイメージ用に準備するには、次のいずれかの手順を実行します。

  • インスタンスを停止してシャットダウンできるようにし、永続ディスクへのデータの書き込みを停止します。

  • イメージを作成する前にインスタンスを停止できない場合は、ディスクへの書き込み量を最小限に抑え、ファイル システムを同期してください。

    1. 永続ディスクにデータを書き込むアプリケーションまたはオペレーティング システム プロセスを一時停止します。
    2. 必要に応じて、アプリケーションでディスクへのフラッシュを実行します。たとえば、MySQL には FLUSH ステートメントがあります。他のアプリケーションにも同様のプロセスがある場合があります。
    3. アプリケーションの永続ディスクへの書き込みを停止します。
    4. sudo sync を実行します。

インスタンスの準備が完了したら、イメージを作成します

イメージを作成する

次のソースからディスク イメージを作成できます。

  • 永続ディスク。ディスクがインスタンスに接続されていても構いません。
  • プロジェクトの別のイメージ
  • 別のプロジェクトで共有されているイメージ
  • Google Cloud Storage 内の圧縮された RAW イメージ

Console を使用してイメージをコピーすることはできません。イメージをコピーするには、gcloud コマンドライン ツールか API を使用します。

Console

  1. Google Cloud Platform Console で、[イメージの作成] ページに移動します。
    [イメージの作成] ページに移動
  2. イメージを作成するディスクを選択します。
  3. イメージのプロパティを指定します。たとえば、イメージのイメージ ファミリー名を指定して、このイメージをイメージ ファミリーの一部として管理できます。
  4. 実行中のイメージに接続されたディスクからイメージを作成する場合、[Force creation from running instance] をオンにして、インスタンスの実行中にイメージを作成することを確認します。
  5. [作成] をクリックしてイメージを作成します。

gcloud

永続ディスクからイメージを作成します。

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

ここで:

  • [IMAGE_NAME] は、新しく作成するイメージの名前です。
  • [SOURCE_DISK] は、新しいイメージの作成元となるディスクです。
  • [ZONE] は、ディスクが配置されているゾーンです。
  • [IMAGE_FAMILY] は、このイメージが属するイメージ ファミリーを指定するオプションのフラグです。
  • [--force] は、実行中のインスタンスからイメージを作成するためのオプションのフラグです。デフォルトでは、実行中のインスタンスからイメージを作成することはできません。このフラグは、インスタンスの実行中にイメージを作成することを確実に意図している場合にのみ指定してください。

別のイメージからイメージを作成します。

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

ここで:

  • [IMAGE_NAME] は、新しく作成するイメージの名前です。
  • [SOURCE_IMAGE] は、新しいイメージの作成元となるイメージです。
  • [IMAGE_PROJECT] は、ソースイメージを配置するプロジェクトを指定するオプションのパラメータです。別のプロジェクトからイメージをコピーする場合にこのパラメータを使用します。
  • [IMAGE_FAMILY] は、この新しいイメージが属するイメージ ファミリーを指定するオプションのフラグです。

API

images().insert メソッドへの POST リクエストを作成します。リクエストの本文の URL は、イメージを作成するソース オブジェクトをポイントします。プロジェクトとゾーンを自分のプロジェクト ID と永続ディスクのゾーンに置き換えます。

永続ディスクからイメージを作成します。

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

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

ここで:

  • [SOURCE_DISK] は、イメージの作成元のディスクです。
  • [ZONE] は、ソースディスクが配置されているゾーンです。
  • [PROJECT_ID] は、イメージが属するプロジェクトです。
  • [IMAGE_NAME] は、新しく作成するイメージの名前です。
  • [ZONE] は、ディスクが属するゾーンです。
  • [FORCE_CREATE] は、実行中のインスタンスからイメージを作成するためのオプションのパラメータです。実行中のインスタンスからイメージを作成することを確実に意図している場合にのみ、TRUE を指定します。このパラメータを指定しない場合、デフォルト値は FALSE です。

別のイメージからイメージを作成します。

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

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

ここで:

  • [SOURCE_IMAGE] は、イメージの作成元となるイメージです。
  • [PROJECT_ID] は、イメージが属するプロジェクトです。
  • [IMAGE_NAME] は、新しく作成するイメージの名前です。

イメージを追加する方法の詳細については、イメージ参照をご覧ください。

イメージの使用を中止する

Google Compute Engine では、イメージにサポート終了ステータスを設定することで、所有するカスタム イメージを非推奨にすることができます。サポート終了ステータスごとに異なるレスポンスがサーバーから生成され、移行ユーザーがサポートされないイメージの使用を管理可能な方法で中止するのに役立ちます。

イメージのサポート終了ステータスを設定するには、次のコマンドを実行します。

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

ここで、[IMAGE] はサポート終了するイメージの名前です。

サポート終了状態は、次のいずれかになります。

  • DEPRECATED - このイメージはサポート終了されたとみなされます。ユーザーがこのイメージを使用しようとすると、リクエストは成功しますが、Google Compute Engine によって警告も返されます。このイメージへの新しいリンクは依然として許可されます。イメージ ファミリーは、このイメージがファミリー内で最新のイメージであっても、このイメージをポイントしなくなります。
  • OBSOLETE - このイメージは廃止され、新しいユーザーはこれを使用できません。Google Compute Engine は、ユーザーがリクエストでこのイメージを使用しようとした場合にエラーを返します。このイメージへの既存のリンクは依然として許可されます。
  • DELETED - このイメージは削除され、ユーザーは使用できません。Google Compute Engine は、ユーザーがこのイメージを使用しようとした場合にエラーを返します。

イメージを削除する

削除できるカスタム イメージは、自分またはプロジェクトへのアクセス権を持つ他のユーザーが追加したカスタム イメージのみです。イメージを削除するには、次のコマンドを実行します。

gcloud compute images delete [IMAGE]

ここで、[IMAGE] は削除するイメージの名前です。

イメージ ファミリー内のイメージのバージョンを設定する

イメージ ファミリーを使用して、イメージのバージョン管理を簡略化します。イメージをイメージ ファミリーに追加し、最新のイメージ バージョンとして設定します。イメージ ファミリーを以前のイメージ バージョンにロールバックする必要があると判断した場合は、ファミリー内の最新のイメージの使用を中止します。

たとえば、image-v1 という名前のイメージをイメージ ファミリーの一部として作成します。

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

イメージ ファミリーは image-v1 をポイントします。2 つ目のイメージをファミリーに追加します。

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

image-v2 はイメージ ファミリーに追加した最新のイメージであるため、イメージ ファミリーではこのイメージがポイントされます。gcloud compute images describe-from-family コマンドを実行して、ファミリーでどのイメージがポイントされるかを確認できます。次に例を示します。

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

イメージ ファミリーをロールバックして image-v2 をポイントしなくなるようにする必要があると判断した場合は、image-v2 をサポート終了にすると、ファミリーは再び image-v1 をポイントします。

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

イメージ ファミリーが image-v1 を再びポイントしていることを確認します。

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

カスタム イメージ上でゲスト オペレーティング システムの機能を有効にする

カスタム イメージを作成する際に、guestOsFeatures パラメータを設定することができます。このパラメータを使用すると、ブートディスクのためにイメージを使用する VM インスタンスの 1 つ以上の機能を有効にすることができます。次の機能が利用可能です。

  • MULTI_IP_SUBNET - /32 以外のネットマスクでインターフェースを構成します。
  • SECURE_BOOT - UEFI セキュアブートを有効にします。これにより、署名のないソフトウェアが起動したり、署名のないドライバが VM インスタンスにロードされたりすることがないように制限されます。
  • UEFI_COMPATIBLE - 代替システム起動方法である UEFI ブートを有効にします。ほとんどの公開イメージでは、主要なブート方法として GRUB ブートローダーが使用されています。
  • VIRTIO_SCSI_MULTIQUEUE - ローカル SSD デバイス用のマルチキュー SCSI 機能を有効にします。このオプションは、NVMe に対する代替手段です。
    • Linux イメージの場合、カーネル バージョン 3.17 以上のイメージで VIRTIO_SCSI_MULTIQUEUE を有効にすることができます。
    • Windows イメージの場合、ドライバ バージョン 1.2.0.1621 以上のイメージで VIRTIO_SCSI_MULTIQUEUE を有効にすることができます。
  • WINDOWS - Windows Server イメージの場合に必要です。Windows Server 用の新しい公開イメージには、それが Windows イメージであることを示す WINDOWS パラメータが含まれています。

gcloud コマンドライン ツールまたは API を使用して、カスタム イメージにおけるゲスト オペレーティング システムの機能を有効にします。

gcloud

既存のカスタム イメージの 1 つからカスタム イメージを作成しますが、--guest-os-features フラグも含めます。

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

ここで:

  • [IMAGE_NAME] は、新しく作成するイメージの名前です。
  • [SOURCE_IMAGE] は、新しいイメージの作成元となるイメージです。
  • [IMAGE_PROJECT] は、ソースイメージを配置するプロジェクトを指定するオプションのパラメータです。別のプロジェクトからイメージをコピーする場合にこのパラメータを使用します。
  • [FEATURE_ID] は、ゲスト OS で利用可能な 1 つの機能の ID です。カンマ区切りリストとして複数の機能を指定することができます。

API

images().insert メソッドへの POST リクエストを作成します。リクエストの本文の URL は、イメージを作成するソース オブジェクトをポイントします。プロジェクトとゾーンを自分のプロジェクト ID と永続ディスクのゾーンに置き換えます。

永続ディスクからイメージを作成します。

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]"
  }
 ]
}

ここで:

  • [IMAGE_NAME] は、新しく作成するイメージの名前です。
  • [SOURCE_IMAGE] は、新しいイメージの作成元となるイメージです。
  • [IMAGE_PROJECT] は、ソースイメージがどのプロジェクトに配置されているかを指定するパラメータです。
  • [FEATURE_ID] は、ゲスト OS で利用可能な 1 つの機能の ID です。カンマ区切りリストとして複数の機能を指定することができます。

イメージを追加する方法の詳細については、イメージ参照をご覧ください。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Compute Engine ドキュメント