マシンイメージを作成する


マシンイメージを使用すると、Compute Engine で実行される VM インスタンス用に、すべての構成、メタデータ、権限、データを複数のディスクから格納できます。マシンイメージを作成するために使用する VM インスタンスは、ソース VM インスタンスと呼ばれます。

マシンイメージを使用するタイミングと方法については、マシンイメージをご覧ください。

このドキュメントでは、ソース VM インスタンスからマシンイメージを作成する手順を説明します。

始める前に

  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init

制限事項

  • マシンイメージは、プロジェクト間で共有できます。ただし、共有 VPC ネットワークはサポートされていません。
  • マシンイメージは最大で 10 分に 1 回作成できます。1 つのインスタンスから複数のマシンイメージを作成する大量のリクエストを発行する場合、60 分で最大 6 件のリクエストを発行できます。
  • マシンイメージを保護するには、Cloud Key Management Service(Cloud KMS)または顧客指定の暗号鍵(CSEK)を使用します。暗号鍵はディスクの内容を保護します。ただし、メタデータは保護されません。
  • CSEK でマシンイメージを保護する場合、マシンイメージの生成時にすべてのディスクデータの完全なコピーが保存されます。それ以外は、ディスクデータは差分コピーに保存されます。
  • 次の条件を満たすソース VM からマシンイメージを作成することはできません。

    • 200 TB を超えるディスクがアタッチされている。
    • アタッチされたディスクがない。
    • Hyperdisk Extreme ディスクがアタッチされている。

インスタンスとディスクのプロパティがマシンイメージでサポートされていない

VM インスタンスからマシンイメージを作成する場合、またはマシンイメージから VM インスタンスを作成する場合、次のインスタンスとディスクのプロパティは保持または復元されません。

  • disks.architecture
  • disks.description
  • disks.labels
  • disks.locked
  • disks.multiWriter
  • disks.onUpdateAction
  • disks.provisionedIops
  • disks.shieldedInstanceInitialState
  • disks.sourceImage
  • disks.sourceImageEncryptionKey
  • disks.sourceInstantSnapshot
  • disks.sourceSnapshot
  • disks.sourceSnapshotEncryptionKey
  • privateIpv6GoogleAccess
  • resourceManagerTags
  • resourcePolicies
  • secure_tag
  • shieldedInstanceConfig

VM からマシンイメージを作成する

マシンイメージは、Google Cloud コンソールGoogle Cloud CLI、または REST を使用して作成できます。

マシンイメージを作成するには、次の情報が必要です。

  • 作成するマシンイメージの名前。
  • ソース VM インスタンスの名前。
  • ソース VM インスタンスが配置されているゾーン。
  • 説明(省略可)。
  • オプションの storageLocation。ロケーションを指定しなかった場合は、ソース VM インスタンスのマルチリージョンの Cloud Storage ロケーションがデフォルトのストレージ ロケーションとなります。
  • オプションの暗号鍵。Google が管理する鍵、Cloud Key Management Service(Cloud KMS)鍵、顧客指定の暗号鍵(CSEK)のいずれかを選択できます。暗号鍵が指定されていない場合、マシンイメージは Google が管理する鍵を使用して暗号化されます。
  • インスタンスのクローン作成とスナップショット作成にマシンイメージを使用する場合は、インスタンスからマシンイメージを生成する前に、そのインスタンスに固有の OS とアプリ情報を削除します。たとえば、Windows VM インスタンスの場合は、GCESysprep を使用してレプリケーション用にシステムを準備します。

コンソール

  1. Google Cloud Console で、[マシンイメージ] ページに移動します。

    [マシンイメージ] に移動

  2. [マシンイメージを作成] をクリックします。

  3. マシンイメージの [名前] を指定します。

  4. (省略可)説明を指定します。

  5. [ソース VM インスタンス] を選択します。

  6. (省略可)マシンイメージを保存するロケーションを指定します。[マルチリージョン] または [リージョン] のいずれかのストレージを選択します。ロケーションの詳細については、マシンイメージの保存ロケーションをご覧ください。

  7. (省略可)[暗号化] 方式を選択します。

  8. [作成] をクリックします。

gcloud

gcloud compute machine-images create コマンドを使用して、インスタンスからマシンイメージを作成します。

gcloud compute machine-images create MACHINE_IMAGE_NAME \
    --source-instance=SOURCE_VM_NAME

次のように置き換えます。

  • MACHINE_IMAGE_NAME: 作成するマシンイメージの名前。
  • SOURCE_VM_NAME: イメージの作成元となるソース VM インスタンスの名前。

たとえば、次の gcloud コマンドを使用して、my-instance というソース インスタンスから my-machine-image というマシンイメージを作成できます。

gcloud compute machine-images create my-machine-image  \
    --source-instance=my-instance

この処理には数分かかります。マシンイメージが作成されると、次のような出力が表示されます。

Created [https://www.googleapis.com/compute/v1/projects/project-12345/global/machineImages/my-machine-image].
NAME               STATUS
my-machine-image   READY

REST

API で、machineimages.insert メソッドに対して POST リクエストを作成します。リクエストの本文に次の POST リクエストを指定します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/machineImages

{
  "name": "MACHINE_IMAGE_NAME",
  "sourceInstance": "SOURCE_INSTANCE_URL"
}

次のように置き換えます。

  • PROJECT_ID: プロジェクト ID
  • MACHINE_IMAGE_NAME: 作成するマシンイメージの名前。
  • SOURCE_INSTANCE_URL: マシンイメージの作成に使用するソース VM インスタンスの完全な URL か URL の一部。たとえば、myProject というプロジェクトに my-instance というソース インスタンスがあるとします。有効な URL は次のとおりです。

    • https://www.googleapis.com/compute/v1/projects/myProject/global/instances/my-instance
    • projects/myProject/global/instances/my-instance
    • global/instances/my-instance

次のステップ