VM インスタンスの作成と起動

このドキュメントでは、ブートディスク イメージ、ブートディスク スナップショット、またはコンテナ イメージを使用して仮想マシン(VM)インスタンスを作成する方法について説明します。一部のイメージShielded VM 機能をサポートしています。これは、UEFI 準拠のファームウェア、セキュアブート、vTPM で保護されたメジャード ブートなどのセキュリティ機能を備えています。Shielded VM では、vTPM と整合性モニタリングがデフォルトで有効になっています。

VM を作成するときに、1 つ以上のディスクを作成できます。作成後、VM にディスクを追加することもできます。VM インスタンスを作成すると、Compute Engine によってそのインスタンスが自動的に起動されます。

より具体的または複雑な VM の作成については、次のリソースをご覧ください。

既存のライセンスを使用する場合は、単一テナントノードでお客様が所有するライセンスを使用するをご覧ください。

始める前に

イメージから VM インスタンスを作成する

このセクションでは、公開 OS イメージまたはカスタム イメージから VM を作成する方法について説明します。VM には、ブートローダー、ブート ファイル システム、OS イメージが含まれています。

Compute Engine で利用可能な公開イメージのリストを表示する

公開イメージを使用して VM を作成する前に、Compute Engine で使用可能な公開イメージのリストを確認します。

各公開イメージで使用できる機能の詳細については、オペレーティング システム別の機能サポートをご覧ください。

Console

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

    [イメージ] に移動

gcloud

  1. 次のコマンドを実行します。

    gcloud compute images list
  2. イメージまたはイメージ ファミリーの名前と、イメージを含むプロジェクトの名前をメモしておきます。

  3. 省略可: イメージが Shielded VM 機能をサポートしているかどうかを確認するには、次のコマンドを実行します。

    gcloud compute images describe IMAGE_NAME \
        --project=IMAGE_PROJECT
    

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

    イメージが Shielded VM 機能をサポートしている場合、出力に type: UEFI_COMPATIBLE という行が含まれています。

API

  1. 次のコマンドを実行します。

    GET https://compute.googleapis.com/compute/v1/projects/IMAGE_PROJECT/global/images/
    
  2. イメージまたはイメージ ファミリーの名前と、イメージを含むプロジェクトの名前をメモしておきます。

  3. 省略可: イメージが Shielded VM 機能をサポートしているかどうかを確認するには、次のコマンドを実行します。

    GET https://compute.googleapis.com/compute/v1/projects/IMAGE_PROJECT/global/images/IMAGE_NAME
    

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

    イメージが Shielded VM 機能をサポートしている場合、出力に type: UEFI_COMPATIBLE という行が含まれています。

公開イメージから VM インスタンスを作成する

公開 OS イメージは、Google、オープンソース コミュニティ、サードパーティ ベンダーによって提供され、維持されています。デフォルトでは、すべての Google Cloud プロジェクトで公開 OS イメージから VM を作成できます。ただし、Cloud プロジェクトに信頼できるイメージのリストが定義されている場合は、そのリストのイメージのみを使用して VM を作成できます。

ローカル SSDShielded VM イメージを作成する場合、整合性モニタリングまたは仮想トラステッド プラットフォーム モジュール(vTPM)でデータを保護することはできません。

Console

  1. Google Cloud Console で、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. プロジェクトを選択し、[続行] をクリックします。

  3. [インスタンスを作成] をクリックします。

  4. VM の名前を指定します。リソースの命名規則をご覧ください。

  5. (省略可)この VM のゾーンを変更します。Compute Engine は、複数のゾーンで各リージョンが均等に使用されるように、各リージョン内でゾーンのリストをランダム化します。

  6. VM のマシン構成を選択します。

  7. [ブートディスク] セクションの [変更] をクリックして、ブートディスクを構成します。別のブートディスクを明示的に選択しない限り、新しい VM の名前が既存の永続ディスクの名前と一致する場合は、既存の永続ディスクが自動的にブートディスクとして新しい VM にアタッチされます。

  8. [公開イメージ] タブで、以下を選択します。

    • OS
    • OS バージョン
    • ブートディスクの種類
    • ブートディスク サイズ
  9. [保存] をクリックして、ブートディスクのオプションを確認します。

  10. [HTTP トラフィックを許可する] または [HTTPS トラフィックを許可する] を選択して、VM への HTTP または HTTPS トラフィックを許可します。このいずれかを選択すると、Compute Engine は VM にネットワーク タグを追加し、ファイアウォール ルールと VM を関連付けます。Compute Engine は、対応する上り(内向き)ファイアウォール ルールを作成し、tcp:80(HTTP)または tcp:443(HTTPS)で受信するすべてのトラフィックを許可します。

  11. (省略可)Shielded VM の機能をサポートする OS イメージを選択した場合は、Shielded VM の設定を変更できます。Shielded VM の設定を変更するには、[管理、セキュリティ、ディスク、ネットワーキング、単一テナンシー] セクションの [セキュリティ] タブをクリックし、必要に応じて次の操作を行います。

  12. [作成] をクリックして VM を作成し、起動します。

gcloud

  1. 公開イメージを選択します。イメージまたはイメージ ファミリーの名前と、イメージを含むプロジェクトの名前をメモしておきます。
  2. gcloud compute instances create コマンドを使用して、イメージ ファミリーまたは特定のバージョンの OS イメージから VM を作成します。

    オプションの --shielded-secure-boot フラグを指定すると、Compute Engine は 3 つの Shielded VM 機能をすべて有効にした VM を作成します。

    Compute Engine が VM を起動した後、Shielded VM のオプションを変更するには、VM を停止する必要があります。

    gcloud compute instances create VM_NAME \
        [--image=IMAGE | --image-family=IMAGE_FAMILY] \
        --image-project=IMAGE_PROJECT
        --machine-type=MACHINE_TYPE

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

    • VM_NAME: 新しい VM の名前
    • IMAGE または IMAGE_FAMILY: 次のいずれかを指定します。

      • IMAGE: 公開イメージの特定のバージョン

        例: --image=debian-10-buster-v20200309

      • IMAGE_FAMILY: イメージ ファミリー

        これにより、非推奨ではない最新の OS イメージから VM が作成されます。たとえば、--image-family=debian-10 を指定すると、Compute Engine は Debian 10 イメージ ファミリーの OS イメージの最新バージョンから VM を作成します。

    • IMAGE_PROJECT: イメージを含むプロジェクト

    • MACHINE_TYPE: 新しい VM のマシンタイプ(事前定義またはカスタム

      ゾーンで使用できるマシンタイプのリストを取得するには、--zones フラグを指定して gcloud compute machine-types list コマンドを使用します。

  3. Compute Engine によって VM が作成されたことを確認します。

    gcloud compute instances describe VM_NAME
    

    VM_NAME は VM の名前で置き換えます。

API

  1. 公開イメージを選択します。イメージまたはイメージ ファミリーの名前と、イメージを含むプロジェクトの名前をメモしておきます。
  2. instances.insert メソッドを使用して、イメージ ファミリーまたは特定のバージョンの OS イメージから VM を作成します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    
    {
     "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
     "name": "VM_NAME",
     "disks": [
       {
         "initializeParams": {
           "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
         },
         "boot": true
       }
     ],
     "shieldedInstanceConfig": {
       "enableSecureBoot": ENABLE_SECURE_BOOT
     }
    }
    

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

    • PROJECT_ID: VM を作成するプロジェクトの ID
    • ZONE: VM を作成するゾーン
    • MACHINE_TYPE_ZONE: 新しい VM に使用するマシンタイプを含むゾーン
    • MACHINE_TYPE: 新しい VM のマシンタイプ(事前定義またはカスタム
    • VM_NAME: 新しい VM の名前
    • IMAGE_PROJECT: イメージを含むプロジェクト

      たとえば、イメージ ファミリーとして debian-10 を指定する場合は、イメージ プロジェクトとして debian-cloud を指定します。

    • IMAGE または IMAGE_FAMILY: 次のいずれかを指定します。

      • IMAGE: 公開イメージの特定のバージョン

        例: "sourceImage": "projects/debian-cloud/global/images/debian-10-buster-v20200309"

      • IMAGE_FAMILY: イメージ ファミリー

        これにより、非推奨ではない最新の OS イメージから VM が作成されます。たとえば、"sourceImage": "projects/debian-cloud/global/images/family/debian-10" を指定すると、Compute Engine は Debian 10 イメージ ファミリーの OS イメージの最新バージョンから VM を作成します。

    • ENABLE_SECURE_BOOT: 省略可。Shielded VM 機能をサポートしているイメージを選択した場合は、Compute Engine がデフォルトで仮想トラステッド プラットフォーム モジュール(vTPM)整合性モニタリングを有効にします。Compute Engine は、デフォルトではセキュアブートを有効にしません。

      enableSecureBoottrue を指定すると、Compute Engine は 3 つの Shielded VM 機能をすべて有効にした VM を作成します。Compute Engine が VM を起動した後、Shielded VM のオプションを変更するには、VM を停止する必要があります。

Python

def create_instance(compute, project, zone, name, bucket):
    # Get the latest Debian Jessie image.
    image_response = compute.images().getFromFamily(
        project='debian-cloud', family='debian-9').execute()
    source_disk_image = image_response['selfLink']

    # Configure the machine
    machine_type = "zones/%s/machineTypes/n1-standard-1" % zone
    startup_script = open(
        os.path.join(
            os.path.dirname(__file__), 'startup-script.sh'), 'r').read()
    image_url = "http://storage.googleapis.com/gce-demo-input/photo.jpg"
    image_caption = "Ready for dessert?"

    config = {
        'name': name,
        'machineType': machine_type,

        # Specify the boot disk and the image to use as a source.
        'disks': [
            {
                'boot': True,
                'autoDelete': True,
                'initializeParams': {
                    'sourceImage': source_disk_image,
                }
            }
        ],

        # Specify a network interface with NAT to access the public
        # internet.
        'networkInterfaces': [{
            'network': 'global/networks/default',
            'accessConfigs': [
                {'type': 'ONE_TO_ONE_NAT', 'name': 'External NAT'}
            ]
        }],

        # Allow the instance to access cloud storage and logging.
        'serviceAccounts': [{
            'email': 'default',
            'scopes': [
                'https://www.googleapis.com/auth/devstorage.read_write',
                'https://www.googleapis.com/auth/logging.write'
            ]
        }],

        # Metadata is readable from the instance and allows you to
        # pass configuration from deployment scripts to instances.
        'metadata': {
            'items': [{
                # Startup script is automatically executed by the
                # instance upon startup.
                'key': 'startup-script',
                'value': startup_script
            }, {
                'key': 'url',
                'value': image_url
            }, {
                'key': 'text',
                'value': image_caption
            }, {
                'key': 'bucket',
                'value': bucket
            }]
        }
    }

    return compute.instances().insert(
        project=project,
        zone=zone,
        body=config).execute()

カスタム イメージから VM を作成する

カスタム イメージは、自分のプロジェクトにのみ属します。カスタム イメージで VM を作成するには、まずカスタム イメージを作成する必要があります。

Console

  1. [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. プロジェクトを選択し、[続行] をクリックします。

  3. [インスタンスを作成] をクリックします。

  4. VM の名前を指定します。リソースの命名規則をご覧ください。

  5. (省略可)この VM のゾーンを変更します。Compute Engine は、複数のゾーンで各リージョンが均等に使用されるように、各リージョン内でゾーンのリストをランダム化します。

  6. VM のマシン構成を選択します。

  7. [ブートディスク] セクションの [変更] をクリックして、ブートディスクを構成します。次に、以下の操作を行います。

    1. [カスタム イメージ] タブを選択します。
    2. [表示するイメージの取得元] プルダウン リストからプロジェクトを選択します。
    3. [イメージ] プルダウン リストから必要なイメージを選択します。
    4. ブートディスクの種類を選択します。
    5. サイズを指定します。
    6. [選択] をクリックします。
  8. VM への HTTP または HTTPS トラフィックを許可するには、[HTTP トラフィックを許可する] または [HTTPS トラフィックを許可する] をオンにします。

    Cloud Console によってネットワーク タグが VM に追加されます。また、対応する上り(内向き)ファイアウォール ルールが作成され、tcp:80(HTTP)または tcp:443(HTTPS)で受信するすべてのトラフィックが許可されます。このネットワーク タグによってファイアウォール ルールが VM に関連付けられます。詳細については、Virtual Private Cloud のドキュメントでファイアウォール ルールの概要をご覧ください。

  9. [作成] をクリックして VM を作成し、起動します。

gcloud

gcloud compute instances create コマンドを実行して、カスタム イメージで VM を作成します。

gcloud compute instances create VM_NAME \
    --image-project IMAGE_PROJECT \
    [--image IMAGE | --image-family IMAGE_FAMILY]

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

  • VM_NAME: VM の名前
  • IMAGE_PROJECT: イメージを含むプロジェクトの名前
  • IMAGE または IMAGE_FAMILY: 次のいずれかを指定します。
    • IMAGE: カスタム イメージの名前

      例: --image=my-debian-image-v2

    • IMAGE_FAMILY: カスタム イメージ ファミリーの一部としてカスタム イメージを作成した場合は、そのカスタム イメージ ファミリーを指定します。

      これにより、カスタム イメージ ファミリー内の最新の非推奨ではない OS イメージと OS バージョンから VM が作成されます。たとえば、--image-family=my-debian-family を指定すると、Compute Engine はカスタム my-debian-family イメージ ファミリーの最新の OS イメージから VM を作成します。

API

API でカスタム イメージを使用して VM を作成するプロセスは、一般公開イメージを使用して VM を作成する場合と同じです。

カスタム イメージから VM を作成するには、instances.insert メソッドを使用します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
 "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
 "name": "VM_NAME",
 "disks": [
   {
     "initializeParams": {
       "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
     },
     "boot": true
   }
 ],
 .....
}

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

  • PROJECT_ID: VM を作成するプロジェクトの ID
  • ZONE: VM を作成するゾーン
  • MACHINE_TYPE_ZONE: 新しい VM に使用するマシンタイプを含むゾーン
  • MACHINE_TYPE: 新しい VM のマシンタイプ(事前定義またはカスタム
  • VM_NAME: 新しい VM の名前
  • IMAGE_PROJECT: カスタム イメージを含むプロジェクトの名前
  • IMAGE または IMAGE_FAMILY: 次のいずれかを指定します。

    • IMAGE: カスタム イメージの名前

      例: "sourceImage": "projects/my-project-1234/global/images/my-debian-image-v2"

    • IMAGE_FAMILY: カスタム イメージ ファミリーの一部としてカスタム イメージを作成した場合は、そのカスタム イメージ ファミリーを指定します。

      これにより、カスタム イメージ ファミリー内の最新の非推奨ではない OS イメージから VM が作成されます。たとえば、"sourceImage": "projects/my-project-1234/global/images/family/my-debian-family" を指定すると、Compute Engine はカスタム my-debian-family イメージ ファミリーの OS イメージの最新バージョンから VM を作成します。

追加の非ブートディスクを含む VM インスタンスを作成する

Console

  1. Google Cloud Console で、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. プロジェクトを選択し、[続行] をクリックします。

  3. [インスタンスを作成] をクリックします。

  4. VM の名前を指定します。リソースの命名規則をご覧ください。

  5. (省略可)この VM のゾーンを変更します。Compute Engine は、複数のゾーンで各リージョンが均等に使用されるように、各リージョン内でゾーンのリストをランダム化します。

  6. VM のマシン構成を選択します。

  7. [ブートディスク] セクションの [変更] をクリックして、ブートディスクを構成します。別のブートディスクを明示的に選択しない限り、新しい VM の名前が既存の永続ディスクの名前と一致する場合は、既存の永続ディスクが自動的にブートディスクとして新しい VM にアタッチされます。

  8. [公開イメージ] タブで、以下を選択して [保存] をクリックします。

    • OS
    • OS バージョン
    • ブートディスクの種類
    • ブートディスク サイズ
  9. [HTTP トラフィックを許可する] または [HTTPS トラフィックを許可する] を選択して、VM への HTTP または HTTPS トラフィックを許可します。このいずれかを選択すると、Compute Engine は VM にネットワーク タグを追加し、ファイアウォール ルールと VM を関連付けます。Compute Engine は、対応する上り(内向き)ファイアウォール ルールを作成し、tcp:80(HTTP)または tcp:443(HTTPS)で受信するすべてのトラフィックを許可します。

  10. VM に非ブートディスクを追加する手順は、次のとおりです。

    1. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] セクションをクリックします。
    2. [ディスク] タブをクリックします。
    3. [追加ディスク] で [新しいディスクを追加] をクリックします。
    4. [名前]、[タイプ]、[ソースの種類]、[モード]、[削除ルール] に、ディスクの情報を指定します。新しいディスクの追加の詳細については、ディスクの作成とアタッチをご覧ください。
    5. [完了] をクリックします。
  11. [作成] をクリックして VM を作成し、起動します。

gcloud

gcloud compute instances create コマンドを実行して、追加の非ブートディスクを使用する VM を作成します。

VM を作成する際は、最大 128 個の非ブートディスクを追加できます。作成する非ブートディスクごとに --create-disk フラグを指定します。

公開イメージまたはストック イメージから非ブートディスクを作成するには、--create-disk フラグに image または image-family プロパティと、image-project プロパティを指定します。空のディスクを作成するには、これらのプロパティを指定しないでください。必要に応じて、ディスク sizetype のプロパティを含めることができます。

gcloud compute instances create VM_NAME \
    [--image=IMAGE | --image-family=IMAGE_FAMILY] \
    --image-project=IMAGE_PROJECT \
    --create-disk [image=DISK_IMAGE | image-family=DISK_IMAGE_FAMILY ],image-project=DISK_IMAGE_PROJECT,size=SIZE_GB,type=DISK_TYPE

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

  • VM_NAME: 新しい VM の名前
  • IMAGE または IMAGE_FAMILY。次のいずれかを指定します。

    • IMAGE: 公開イメージの特定のバージョン

      例: --image=debian-10-buster-v20200309

    • IMAGE_FAMILY: イメージ ファミリー

      これにより、非推奨ではない最新の OS イメージから VM が作成されます。たとえば、--image-family=debian-10 を指定すると、Compute Engine は Debian 10 イメージ ファミリーの OS イメージの最新バージョンから VM を作成します。

  • IMAGE_PROJECT: イメージを含むプロジェクト

  • 追加のディスクの場合は、次のように置き換えます。

    • DISK_IMAGE または DISK_IMAGE_FAMILY: 次のいずれかを指定します。
      • DISK_IMAGE: 非ブートディスクとして使用するイメージの名前
      • DISK_IMAGE_FAMILY: 非ブートディスクとして使用するイメージ ファミリー
    • DISK_IMAGE_PROJECT: ディスク イメージが属するイメージ プロジェクト
    • SIZE_GB: 省略可。非ブートディスクのサイズ
    • DISK_TYPE: 省略可。永続ディスクのタイプの完全な URL または部分的な URL

      例: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/diskTypes/pd-ssd使用可能なディスクタイプを表示するには、gcloud compute disk-types list コマンドを実行します。

    空のディスクの場合は、DISK_IMAGEDISK_IMAGE_FAMILYDISK_IMAGE_PROJECT のパラメータを指定しないでください。

API

追加のディスクごとに initializeParams プロパティを使用すると、VM の作成時に非ブートディスクを最大 128 個作成できます。公開イメージまたは非公開イメージを使用した追加のディスクを作成します。空のディスクを追加するには、sourceImage 値のない initializeParams エントリを定義します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
 "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE",
 "name": "VM_NAME",
 "disks": [
   {
     "initializeParams": {
       "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
     },
     "boot": true
   },
   {
     "initializeParams": {
       "diskSizeGb": "SIZE_GB",
       "sourceImage": "projects/DISK_IMAGE_PROJECT/global/images/DISK_IMAGE",
       "diskType": "DISK_TYPE"
   },
   {
     "initializeParams": {
     "diskSizeGb": "SIZE_GB",
     "diskType": "DISK_TYPE"
   }
    }...]

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

  • PROJECT_ID: VM を作成するプロジェクトの ID
  • ZONE: VM を作成するゾーン
  • MACHINE_TYPE_ZONE: 新しい VM に使用するマシンタイプを含むゾーン
  • MACHINE_TYPE: 新しい VM のマシンタイプ(事前定義またはカスタム
  • VM_NAME: 新しい VM の名前
  • IMAGE_PROJECT: カスタム イメージを含むプロジェクトの名前
  • IMAGE または IMAGE_FAMILY: 次のいずれかを指定します。

    • IMAGE: カスタム イメージの名前

      例: "sourceImage": "projects/my-project-1234/global/images/my-debian-image-v2"

    • IMAGE_FAMILY: カスタム イメージ ファミリーの一部としてカスタム イメージを作成した場合は、そのカスタム イメージ ファミリーを指定します。

      これにより、カスタム イメージ ファミリー内の最新の非推奨ではない OS イメージ OS バージョンから VM が作成されます。たとえば、"sourceImage": "projects/my-project-1234/global/images/family/my-debian-family" を指定すると、Compute Engine はカスタム my-debian-family イメージ ファミリーの OS イメージの最新バージョンから VM を作成します。

  • 追加のディスクの場合は、次のように置き換えます。

    • SIZE_GB: ディスクサイズ
    • DISK_IMAGE または DISK_IMAGE_FAMILY: 非ブートディスクのソースイメージまたはイメージ ファミリーを指定します。

      • DISK_IMAGE: 非ブートディスクとして使用するイメージの名前

        例: "sourceImage": "projects/DISK_IMAGE_PROJECT/global/images/DISK_IMAGE"

      • DISK_IMAGE_FAMILY: 非ブートディスクとして使用するイメージ ファミリー

        例: "sourceImage": "projects/DISK_IMAGE_PROJECT/global/images/family/DISK_IMAGE_FAMILY"

    • DISK_TYPE: 永続ディスクのタイプの完全な URL または部分的な URL

    例: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/diskTypes/pd-ssd

    空のディスクの場合は、DISK_IMAGEDISK_IMAGE_FAMILYDISK_IMAGE_PROJECT のパラメータを指定しないでください。

ディスクを使用する前に、ディスクをフォーマットしてマウントします。

共有イメージから VM インスタンスを作成する

別のユーザーとイメージを共有している場合は、そのイメージを使用して VM を作成できます。

Console

  1. [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. プロジェクトを選択し、[続行] をクリックします。
  3. [インスタンスを作成] をクリックします。
  4. VM の名前を指定します。リソースの命名規則をご覧ください。
  5. (省略可)この VM のゾーンを変更します。Compute Engine は、複数のゾーンで各リージョンが均等に使用されるように、各リージョン内でゾーンのリストをランダム化します。
  6. VM のマシン構成を選択します。
  7. [ブートディスク] セクションの [変更] をクリックして、ブートディスクを構成します。次に、以下の手順で操作します。
    1. [カスタム イメージ] タブを選択します。
    2. [表示するイメージの取得元] プルダウン リストからイメージ プロジェクトを選択します。
    3. [イメージ] プルダウン リストから必要なイメージを選択します。
    4. [選択] をクリックします。
  8. VM への HTTP または HTTPS トラフィックを許可するには、[HTTP トラフィックを許可する] または [HTTPS トラフィックを許可する] をオンにします。

    Cloud Console によってネットワーク タグが VM に追加されます。また、対応する上り(内向き)ファイアウォール ルールが作成され、tcp:80(HTTP)または tcp:443(HTTPS)で受信するすべてのトラフィックが許可されます。このネットワーク タグによってファイアウォール ルールが VM に関連付けられます。詳細については、Virtual Private Cloud のドキュメントでファイアウォール ルールの概要をご覧ください。

  9. [作成] をクリックして VM を作成し、起動します。

gcloud

gcloud compute instances create command を使用して VM を作成し、--image フラグと --image-project フラグを使用してイメージ名とそのイメージが属するプロジェクトを指定します。

 gcloud compute instances create VM_NAME \
        --image=IMAGE \
        --image-project=IMAGE_PROJECT
    

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

  • VM_NAME: 新しい VM の名前
  • IMAGE: イメージの名前
  • IMAGE_PROJECT: イメージが属するプロジェクト

コマンドが成功すると、gcloud は新しい VM のプロパティを返します。

    Created [https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-b/instances/example-instance].
    NAME                 ZONE           MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
    example-instance     us-central1-b  e2-standard-2               10.240.0.4   104.198.53.60  RUNNING

API

API の手順に沿って公開イメージから VM を作成し、リクエストの本文で image フィールドを指定します。空のディスクを追加する場合は、イメージソースを指定しないでください。必要に応じて、diskSizeGbdiskTypelabels のプロパティを指定できます。

    [...
    image: "projects/PROJECT_ID/global/images/IMAGE_NAME
    {
     "initializeParams": {
        "diskSizeGb": "SIZE_GB",
        "sourceImage": "IMAGE"
           }
     }
     ...]

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

  • PROJECT_ID: イメージを含むプロジェクト
  • IMAGE_NAME: ソースイメージ
  • SIZE_GB: ディスクサイズ
  • IMAGE: 非ブートディスクのソースイメージ
  • 空のディスクの場合は、イメージソースを指定しないでください。

スナップショットから VM インスタンスを作成する

スナップショットでブート永続ディスクをバックアップした場合は、そのスナップショットを使用して VM を作成できます。

同じブートディスクを使用して複数の VM をすばやく作成するには、カスタム イメージを作成し、スナップショットではなく、そのイメージから VM を作成します。

スナップショットから VM インスタンスのブートディスクを作成する

VM を作成する際、新しいブートディスクにブートディスクのスナップショットを復元できます。

Console

  1. [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. プロジェクトを選択し、[続行] をクリックします。

  3. [インスタンスを作成] をクリックします。

  4. VM の名前を指定します。リソースの命名規則をご覧ください。

  5. (省略可)この VM のゾーンを変更します。Compute Engine は、複数のゾーンで各リージョンが均等に使用されるように、各リージョン内でゾーンのリストをランダム化します。

  6. VM のマシン構成を選択します。

  7. [ブートディスク] セクションの [変更] をクリックして、ブートディスクを構成します。次に、以下の操作を行います。

    1. [スナップショット] タブをクリックし、リストからスナップショットを選択します。
    2. [選択] をクリックします。
  8. VM への HTTP または HTTPS トラフィックを許可するには、[HTTP トラフィックを許可する] または [HTTPS トラフィックを許可する] をオンにします。

    Cloud Console によってネットワーク タグが VM に追加されます。また、対応する上り(内向き)ファイアウォール ルールが作成され、tcp:80(HTTP)または tcp:443(HTTPS)で受信するすべてのトラフィックが許可されます。このネットワーク タグによってファイアウォール ルールが VM に関連付けられます。詳細については、Virtual Private Cloud のドキュメントでファイアウォール ルールの概要をご覧ください。

  9. [作成] をクリックして VM を作成し、起動します。

gcloud

gcloud compute instances create コマンドを使用して、--source-snapshot フラグを含めます。

gcloud compute instances create VM_NAME \
    --source-snapshot=BOOT_SNAPSHOT_NAME \
    --boot-disk-size=BOOT_DISK_SIZE \
    --boot-disk-type=BOOT_DISK_TYPE \
    --boot-disk-device-name=BOOT_DISK_NAME

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

  • VM_NAME: 新しい VM の名前
  • BOOT_SNAPSHOT_NAME: 新しい VM のブートディスクに復元するブートディスク スナップショットの名前。
  • BOOT_DISK_SIZE: 省略可。新しいブートディスクのサイズ(ギガバイト単位)

    サイズは、スナップショットが作成されたソースディスクのサイズ以上にする必要があります。

  • BOOT_DISK_TYPE: 省略可。ブート永続ディスクのタイプ

    例: pd-ssd

  • BOOT_DISK_NAME: この VM の新しいブートディスクの名前

API

API を使用してスナップショットから VM を作成する際には、次の制限が適用されます。

  • ブート永続ディスクとして使用できる永続ディスクは 1 つのみです。
  • ブート永続ディスクを、その VM の最初のディスクとしてアタッチする必要があります。
  • source プロパティを指定する場合、initializeParams プロパティを同時に指定することはできません。source はブート永続ディスクがすでに存在することを示しますが、initializeParams プロパティは Compute Engine によって新しいブート永続ディスクを作成する必要があることを示します。

    ブートディスク スナップショットから VM を作成するには、disks プロパティで sourceSnapshot フィールドを指定します。(省略可)新しいブートディスクの diskSizeGb プロパティと diskType プロパティを指定します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "name": "VM_NAME",
  "machineType": "machineTypes/MACHINE_TYPE"
  "networkInterfaces": [{
    "accessConfigs": [{
      "type": "ONE_TO_ONE_NAT",
      "name": "External NAT"
    }],
    "network": "global/networks/default"
  }],
  "disks": [{
     "boot": true,
     "initializeParams": {
       "sourceSnapshot": "global/snapshots/BOOT_SNAPSHOT_NAME",
       "diskSizeGb": "BOOT_DISK_SIZE",
       "diskType": "BOOT_DISK_TYPE"
    }
   }],
 }

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

  • PROJECT_ID: プロジェクト ID
  • ZONE: 新しい VM を作成するゾーン
  • VM_NAME: スナップショットを復元する VM の名前
  • MACHINE_TYPE: VM のマシンタイプ
  • BOOT_SNAPSHOT_NAME: 新しい VM のブートディスクの作成に使用するスナップショットの名前
  • BOOT_DISK_SIZE: 省略可。新しいブートディスクのサイズ(ギガバイト単位)

    サイズは、スナップショットが作成されたソースディスクのサイズ以上にする必要があります。

  • BOOT_DISK_TYPE: 省略可。ブートディスクのタイプ

    例: pd-ssd

新しい VM インスタンスに非ブート スナップショットを復元する

非ブート スナップショットは、セカンダリ永続ディスクのバックアップであり、データを保存する目的でのみ VM が使用します。新しいディスクに非ブート スナップショットを復元して、VM を作成できます。または、既存の VM に非ブート スナップショットを復元することもできます。

非ブート スナップショットを新しい VM に復元するには、VM を作成する際に次の追加の手順を行います。

Console

Console で、新しい VM に非ブート スナップショットを復元する場合は、まず各スナップショットからディスクを作成します。次に、VM を作成する際に新しいディスクをアタッチします。

  1. 新しいディスクに各非ブート スナップショットを復元します。

    1. Google Cloud Console で、[ディスク] ページに移動します。

      [ディスク] に移動

    2. [ディスクを作成] をクリックします。

    3. [名前] でディスクの名前を指定します。リソースの命名規則をご覧ください。

    4. このディスクのリージョンゾーンを選択します。ディスクと VM は同じゾーン内に存在する必要があります。

    5. ディスクの [タイプ] を選択します。

    6. [ソースの種類] で、[スナップショット] を選択します。

    7. 新しい [ソース スナップショット] フィールドで、新しいディスクに復元する非ブート スナップショットを選択します。

    8. [作成] をクリックしてディスクを作成します。

    この手順を繰り返して、復元する各スナップショットからディスクを作成します。VM を作成する際は、非ブートディスクを最大 15 個まで追加できます。

  2. Google Cloud Console で、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  3. [インスタンスを作成] をクリックします。

  4. VM の名前を指定します。リソースの命名規則をご覧ください。

  5. この VM のリージョンゾーンを選択します。ディスクと VM は同じゾーン内に存在する必要があります。

  6. VM の [マシンタイプ] を選択します。

  7. 外部からの受信トラフィックを許可する場合は、VM のファイアウォール ルールを変更します。

  8. ディスクを VM にアタッチする手順は次のとおりです。

    1. [管理、セキュリティ、ディスク、ネットワーキング、単一テナンシー] をクリックします。
    2. [ディスク] タブを選択します。
    3. [追加ディスク] で [既存のディスクを接続] をクリックします。
    4. 新しい [ディスク] フィールドで、この VM にアタッチするディスクを選択します。
    5. ディスクのモード削除ルールを指定します。
    6. [完了] をクリックします。

    アタッチするディスクごとに、この手順を繰り返します。VM を作成する際は、非ブートディスクを最大 15 個まで追加できます。

  9. [作成] をクリックして VM を作成し、起動します。

gcloud

gcloud compute instances create コマンドを使用して VM を作成します。復元する非ブート スナップショットごとに、--create-disk フラグを含め source-snapshot を指定します。VM を作成する際は、非ブートディスクを最大 15 個追加できます。

たとえば、2 つの非ブート スナップショットを新しい VM に復元するには、次のコマンドを使用します。

gcloud compute instances create VM_NAME \
    --create-disk source-snapshot=SNAPSHOT_1_NAME,name=DISK_1_NAME,size=DISK_1_SIZE,type=DISK_1_TYPE \
    --create-disk source-snapshot=SNAPSHOT_2_NAME,name=DISK_2_NAME,size=DISK_2_SIZE,type=DISK_2_TYPE

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

  • VM_NAME: 新しい VM の名前
  • SNAPSHOT_1_NAMESNAPSHOT_2_NAME: 復元する非ブート スナップショットの名前
  • DISK_1_NAMEDISK_2_NAME: この VM の新しい非ブートディスクの名前
  • DISK_1_SIZEDISK_2_SIZE: 省略可。新しいブートディスクのサイズ(ギガバイト単位)

    サイズは、スナップショットが作成されたソースディスクのサイズ以上にする必要があります。

  • DISK_1_TYPEDISK_2_TYPE: 省略可。永続ディスクのタイプ

    例: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/diskTypes/pd-ssd

API

API を使用して非ブート スナップショットを新しい VM に復元する場合は、次の制限が適用されます。

  • ブート永続ディスクとして使用できる永続ディスクは 1 つだけです。
  • ブート永続ディスクを、その VM の最初のディスクとしてアタッチする必要があります。
  • source プロパティを指定する場合は、initializeParams プロパティを同時に指定することはできません。source はブート永続ディスクがすでに存在することを示しますが、initializeParams プロパティは Compute Engine によって新しいブート永続ディスクを作成する必要があることを示します。

ベータ版 API を使用して、initializeParams プロパティの下で sourceSnapshot フィールドを指定します。作成する非ブートディスクごとに initializeParams プロパティを繰り返して、最大 15 個の非ブートディスクを追加できます。必要に応じて、作成するディスクの diskSizeGb プロパティと diskType プロパティを指定できます。

たとえば、2 つの非ブート スナップショットを新しい VM に復元するには、次のリクエストを作成します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
{
  "name": "VM_NAME",
  "machineType": "machineTypes/MACHINE_TYPE"
  "networkInterfaces": [{
    "accessConfigs": [{
      "type": "ONE_TO_ONE_NAT",
      "name": "External NAT"
    }],
    "network": "global/networks/default"
  }],
  "disks": [{
     "autoDelete": "true",
     "boot": "true",
     "type": "PERSISTENT",
     "diskSizeGb": "DISK_SIZE",
     "diskType": "DISK_TYPE"
   },
   {
     "initializeParams": {
        "sourceSnapshot": "global/snapshots/SNAPSHOT_1_NAME",
        "diskSizeGb": "DISK_SIZE",
        "diskType": "DISK_TYPE"
     }
   },
   {
     "initializeParams": {
        "sourceSnapshot": "global/snapshots/SNAPSHOT_2_NAME",
        "diskSizeGb": "DISK_SIZE",
        "diskType": "DISK_TYPE"
     }
  }]
 }

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

  • PROJECT_ID: プロジェクト ID
  • ZONE: VM を作成するゾーン
  • VM_NAME: スナップショットを復元する VM の名前
  • MACHINE_TYPE: VM のマシンタイプ
  • DISK_SIZE: 省略可。対応するディスクのサイズ(ギガバイト単位)

    指定する場合、このプロパティは、スナップショットが作成されたソースディスクのサイズ以上にする必要があります。

  • DISK_TYPE: 省略可。対応する永続ディスクのタイプの完全な URL または部分的な URL

    例: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/diskTypes/pd-ssd

  • SNAPSHOT_1_NAMESNAPSHOT_2_NAME: 新しい VM の新しい非ブートディスクに復元する非ブート スナップショットの名前

コンテナ イメージから VM インスタンスを作成する

Compute Engine VM に対してコンテナをデプロイして起動するには、VM を作成するときにコンテナ イメージ名とオプションの構成パラメータを指定します。Compute Engine により、Docker がインストールされた最新バージョンの Container-Optimized OS 公開イメージを使用して VM が作成されます。次に、VM の起動時に Compute Engine によりコンテナが起動されます。詳しくは、VM へのコンテナのデプロイをご覧ください。

コンテナ イメージから VM を作成するには、Cloud Console または gcloud を使用する必要があります。

Console

  1. Google Cloud Console で、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. [インスタンスを作成] をクリックします。

  3. VM の名前を指定します。リソースの命名規則をご覧ください。

  4. [コンテナ] セクションで、[この VM インスタンスにコンテナ イメージをデプロイする] チェックボックスをオンにします。

  5. [コンテナ イメージ] で使用するコンテナ イメージを指定します。例:

    • Cloud Launcher から NGINX 1.12 コンテナ イメージを選択するには:

      gcr.io/cloud-marketplace/google/nginx1:1.12

    • Docker Hub から Apache コンテナ イメージをデプロイする場合は、次のように常に完全な Docker イメージ名を指定します。

      docker.io/httpd:2.4

  6. (省略可)[コンテナの詳細オプション] をクリックします。詳細については、コンテナを実行する際のオプションの構成をご覧ください。

  7. [作成] をクリックして VM を作成し、その VM を起動してコンテナを起動します。

gcloud

gcloud compute instances create-with-container コマンドを実行します。

gcloud compute instances create-with-container VM_NAME \
    --container-image=CONTAINER_IMAGE

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

  • VM_NAME: 新しい VM の名前
  • CONTAINER_IMAGE: コンテナ イメージの名前。

たとえば、次のコマンドは、コンテナ イメージを起動して実行する nginx-vm という名前の VM を作成します。

gcr.io/cloud-marketplace/google/nginx1:1.12

gcloud compute instances create-with-container nginx-vm \
    --container-image=gcr.io/cloud-marketplace/google/nginx1:1.12

Docker Hub から Apache コンテナ イメージをデプロイする場合は、次のように常に完全な Docker イメージ名を指定します。

docker.io/httpd:2.4

他の Google Cloud サービスにアクセスできる VM インスタンスを作成する

他の Google Cloud サービスにアクセスする必要がある VM でアプリケーションを実行する場合は、VM の作成前にサービス アカウントを作成し、サービス アカウントとして実行する VM を設定します。サービス アカウントは特別なアカウントで、認証情報をアプリケーション コードに使用すると、他の Google Cloud サービスにアクセスできます。

詳しくは、サービス アカウントをご覧ください。

特定のサブネットで VM インスタンスを作成する

デフォルトでは、Google Cloud はプロジェクトごとに default という名前の自動モードの VPC ネットワークを作成します。別のネットワークや、自動モードまたはカスタムモードの VPC ネットワークで手動で作成したサブネットを使用するには、VM の作成時にサブネットを指定する必要があります。

サブネットに VM を作成する場合は、次のルールを考慮してください。

  • ネットワークまたはサブネットを指定しないと、Compute Engine はデフォルトの VPC ネットワークを使用し、VM と同じリージョンにある自動サブネットを使用します。
  • ネットワークを指定しないと、Compute Engine は指定されたサブネットからネットワークを推測します。
  • ネットワークを指定する場合は、サブネットを指定する必要があります。また、ネットワークは同じネットワークに属している必要があります。それ以外の場合、VM の作成は失敗します。

Console

  1. Google Cloud Console で、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. プロジェクトを選択し、[続行] をクリックします。

  3. [インスタンスを作成] をクリックします。

  4. VM の名前を指定します。リソースの命名規則をご覧ください。

  5. (省略可)この VM のゾーンを変更します。Compute Engine は、複数のゾーンで各リージョンが均等に使用されるように、各リージョン内でゾーンのリストをランダム化します。

  6. VM への HTTP または HTTPS トラフィックを許可するには、[HTTP トラフィックを許可する] または [HTTPS トラフィックを許可する] をオンにします。

    Cloud Console によってネットワーク タグが VM に追加されます。また、対応する上り(内向き)ファイアウォール ルールが作成され、tcp:80(HTTP)または tcp:443(HTTPS)で受信するすべてのトラフィックが許可されます。このネットワーク タグによってファイアウォール ルールが VM に関連付けられます。詳細については、Virtual Private Cloud のドキュメントでファイアウォール ルールの概要をご覧ください。

  7. [管理、セキュリティ、ディスク、ネットワーク、単一テナンシー] セクションを展開します。

  8. [ネットワーキング] タブをクリックします。[ネットワーク インターフェース] で、ネットワークの詳細を指定します。

    1. [ネットワーク] フィールドで、作成しておいたサブネットを含む VPC ネットワークを選択します。
    2. [サブネット] フィールドで、使用する VM のサブネットを選択します。
  9. [作成] をクリックして VM を作成し、起動します。

gcloud

gcloud コマンドライン ツールを使用する場合は、イメージまたはスナップショットから VM を作成する場合と同じ手順に沿って進め、gcloud compute instances create コマンドを実行する際に --subnet=SUBNET_NAME フラグと --zone=ZONE フラグを指定します。

gcloud compute instances create VM_NAME \
    --network=NETWORK_NAME \
    --subnet=SUBNET_NAME \
    --zone=ZONE

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

  • VM_NAME: VM の名前
  • NETWORK_NAME: (省略可)ネットワークの名前
  • SUBNET_NAME: サブネットの名前

    ネットワーク内のサブネットの一覧を表示するには、gcloud compute networks subnets list コマンドを使用します。

  • ZONE: VM を作成するゾーン(europe-west1-b など)

    VM のリージョンはこのゾーンから推測されます。

API

API の手順に沿ってイメージまたはスナップショットから VM を作成し、リクエストの本文で subnet フィールドを指定します。空のディスクを追加する際には、ソースイメージを追加しないでください。必要に応じて、diskSizeGbdiskTypelabels のプロパティを指定できます。

...
"networkInterfaces": [
{
  "network": "global/networks/NETWORK_NAME",
  "subnetwork": "regions/REGION/subnetworks/SUBNET_NAME",
  "accessConfigs":
    {
      "name": "External NAT",
      "type": "ONE_TO_ONE_NAT"
    }
    {
      "initializeParams": {
         "diskSizeGb": "SIZE_GB",
         "sourceImage": "IMAGE"
    {
      "initializeParams": {
      "diskSizeGb": "SIZE_GB"
     }
 }...]

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

  • NETWORK_NAME: (省略可)ネットワークの名前
  • REGION: 指定したサブネットが存在するリージョン
  • SUBNET_NAME: サブネットの名前
  • SIZE_GB: ディスクサイズ
  • IMAGE: 非ブートディスクのソースイメージ

    空のディスクについては、イメージソースを指定しないでください。

トラブルシューティング

一般的な VM 作成エラーの解決方法については、VM 作成のトラブルシューティングをご覧ください。

次のステップ

使ってみる

Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオで Compute Engine のパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。

Compute Engine の無料トライアル