VM 인스턴스 만들기 및 시작

이 문서에서는 부팅 디스크 이미지, 부팅 디스크 스냅샷 또는 컨테이너 이미지를 사용하여 가상 머신(VM) 인스턴스를 만드는 방법을 설명합니다. 부팅 디스크 이미지를 사용하여 VM 인스턴스를 만들 경우 일반 이미지 또는 보안 VM 이미지를 사용할 수 있습니다. 보안 VM 이미지는 UEFI 규격 펌웨어, 안전한 부팅, vTPM 보호가 적용된 신중한 부팅 같은 보안 기능을 제공합니다. VM 인스턴스를 만들고 나면 Compute Engine에서 인스턴스를 자동으로 시작합니다.

VM 인스턴스를 만들 때 인스턴스에 사용할 여러 디스크를 만들 수 있습니다. 인스턴스를 만든 후 인스턴스에 디스크를 추가할 수도 있습니다.

이 문서에서는 인스턴스를 만드는 기본적인 방법을 설명합니다. 더 구체적이거나 복잡한 인스턴스 구성에 대해서는 다음 리소스를 참조하세요.

기존 라이선스를 가져 오는 경우 단독 테넌트 노드로 사용자 라이선스 사용하기를 참조하세요.

시작하기 전에

이미지를 사용하여 인스턴스 만들기

이 섹션에서는 특정 운영체제의 이미지를 사용하여 인스턴스를 만드는 방법에 대해 설명합니다. 부팅 디스크 이미지에는 부트로더, 부팅 파일 시스템, 인스턴스에서 실행되는 운영체제가 포함됩니다.

고급 사용자의 경우 Compute Engine에서 제공하는 공개 이미지 대신 사용할 커스텀 이미지를 만들 수 있습니다.

Google Cloud Console의 이미지, gcloud 명령줄 도구 또는 API를 사용하여 인스턴스를 만들 수 있습니다.

공개 이미지를 사용하여 인스턴스 만들기

공개 이미지는 Google, 오픈소스 커뮤니티, 제3자 공급업체에서 제공하고 관리합니다. 기본적으로 모든 프로젝트에서 이러한 이미지에 액세스할 수 있으며 이를 사용하여 일반 운영체제 인스턴스를 만들 수 있습니다.

인스턴스를 만들려면 필요한 운영체제의 이미지 계열을 지정합니다. Compute Engine은 여러 Linux 배포판을 제공하며 그중 일부는 일반 이미지와 보안 VM 이미지로 제공됩니다. 인스턴스 스토리지로 로컬 SSD 스토리지를 선택하면 보안 VM의 무결성 모니터링 기능을 사용할 수 없으며 데이터 보안에 vTPM을 사용할 수도 없습니다. 사용할 수 있는 이미지 계열의 목록은 공개 이미지를 참조하세요.

Console

  1. VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 프로젝트를 선택하고 계속을 클릭합니다.
  3. 인스턴스 만들기 버튼을 클릭합니다.
  4. 인스턴스 이름을 지정합니다.
  5. 필요할 경우 이 인스턴스의 영역을 변경합니다.

    참고: 여러 영역에서 사용되도록 각 리전 내에서 영역 목록이 무작위로 선택됩니다.

  6. 인스턴스의 머신 구성을 선택합니다.

  7. 부팅 디스크 섹션에서 변경을 클릭하여 부팅 디스크를 구성합니다.
    MBR 파티션의 제한사항을 고려하여 2TB 이하의 부팅 디스크를 만듭니다.

  8. OS 이미지 탭에서 이미지를 선택합니다.
    보안 VM 이미지만 보려면 보안 VM 기능이 있는 이미지 표시를 선택합니다.

  9. 선택을 클릭합니다.

  10. VM 인스턴스에 HTTP 또는 HTTPS 트래픽을 허용하려면 HTTP 트래픽 허용 또는 HTTPS 트래픽 허용을 선택합니다.

    Cloud Console이 인스턴스에 네트워크 태그를 추가하고 tcp:80(HTTP) 또는 tcp:443(HTTPS)에서 들어오는 모든 트래픽을 허용하는 인그레스 방화벽 규칙을 만듭니다. 네트워크 태그는 방화벽 규칙을 인스턴스와 연결합니다. 자세한 내용은 Virtual Private Cloud 문서의 방화벽 규칙 개요를 참조하세요.

  11. VM 인스턴스에 보조 비부팅 디스크를 추가하려면 다음 안내를 따르세요.

    1. 관리, 보안, 디스크, 네트워킹, 단독 테넌시 섹션을 클릭합니다.
    2. 디스크 탭을 클릭합니다.
    3. 추가 디스크에서 새 디스크 추가를 클릭합니다.
    4. 디스크의 이름, 유형, 소스 유형, 모드, 삭제 규칙을 지정합니다.
    5. 완료를 클릭합니다.
    6. 필요에 따라 디스크를 추가합니다.
  12. 보안 VM을 지원하는 이미지를 선택한 경우 필요하다면 인스턴스의 보안 VM 설정을 변경합니다.

    1. 관리, 보안, 디스크, 네트워킹, 단독 테넌시 섹션에서 보안 탭을 클릭합니다.
    2. 보안 부팅을 사용 중지하려면 보안 부팅 사용을 선택 해제합니다. 안전한 부팅을 사용하면 부팅 수준 및 커널 수준의 멀웨어와 루트킷으로부터 VM 인스턴스를 보호할 수 있습니다. 자세한 내용은 안전한 부팅을 참조하세요.
    3. vTPM(Virtual Trusted Platform Module)을 사용 중지하려면 vTPM 사용을 선택 해제합니다. vTPM을 사용하면 신중한 부팅을 통해 VM 사전 부팅 및 부팅 무결성을 검증할 수 있습니다. 자세한 내용은 vTPM(Virtual Trusted Platform Module)을 참조하세요.

    4. 무결성 모니터링을 사용 중지하려면 무결성 모니터링 사용 체크박스를 선택 취소합니다. 무결성 모니터링을 사용하면 Stackdriver Monitoring을 사용하여 보안 VM 인스턴스의 부팅 무결성을 모니터링할 수 있습니다. 자세한 내용은 무결성 모니터링을 참조하세요.

  13. 만들기 버튼을 클릭하여 인스턴스를 만들고 시작합니다.

gcloud

인스턴스를 만들기 전에 인스턴스의 부팅 디스크에 사용할 운영체제 이미지를 선택합니다. 비보안 VM 공개 이미지 목록을 이미지 ID, 이미지 계열, 이미지 프로젝트와 함께 확인하려면 gcloud compute images list 명령어를 플래그 없이 실행합니다.

gcloud compute images list

보안 VM 공개 이미지 목록을 보려면 gcloud compute images list 명령어를 플래그와 함께 실행합니다.

gcloud compute images list --project gce-uefi-images --no-standard-images

이미지를 선택한 후 gcloud compute instances create 명령어를 사용하여 인스턴스를 만듭니다.

운영체제 이미지의 최신 버전을 사용하려면 --image-family--image-project 플래그를 지정합니다. 예를 들어 debian-9는 지원되지 않는 Debian 9 이미지의 최신 버전을 반환하는 이미지 계열이며 debian-cloud는 이미지 프로젝트입니다.

이미지 계열에서 최신 이미지로 인스턴스를 만듭니다.

gcloud compute instances create [INSTANCE_NAME] \
--image-family [IMAGE_FAMILY] \
--image-project [IMAGE_PROJECT]

각 항목의 의미는 다음과 같습니다.

응답 예시:

Created [https://compute.googleapis.com/compute/v1/projects/myproject/zones/[ZONE]/instances/[INSTANCE_NAME]].
NAME            ZONE   MACHINE_TYPE  INTERNAL_IP   EXTERNAL_IP    STATUS
[INSTANCE_NAME] [ZONE] n1-standard-1 10.105.155.92 173.255.114.53 RUNNING

최신 버전 대신 특정 이미지 버전을 사용해야 하는 경우 --image--image-project 플래그를 지정합니다. 예를 들어 debian-9-stretch-v20170619 Debian 이미지를 사용하는 인스턴스를 만들려면 --image debian-9-stretch-v20170619--image-project debian-cloud를 지정합니다.

특정 버전의 이미지를 사용하여 인스턴스를 만듭니다.

gcloud compute instances create [INSTANCE_NAME] \
    --image [IMAGE_ID] \
    --image-project [IMAGE_PROJECT]

각 항목의 의미는 다음과 같습니다.

  • [INSTANCE_NAME]은 새 인스턴스의 이름입니다.
  • [IMAGE_ID]는 특정 이미지입니다.
  • [IMAGE_PROJECT]는 이미지가 속한 이미지 프로젝트입니다.

인스턴스를 만들 때 보조 비부팅 디스크를 128개까지 추가할 수 있습니다. 만든 각 보조 디스크에 --create-disk 플래그를 지정합니다. 공개 또는 스톡 이미지에서 보조 디스크를 만들려면 --create-disk 플래그에 imageimage-project 속성을 지정합니다. 빈 디스크를 만들려면 이러한 속성을 포함하지 마세요. 필요하다면 디스크 sizetype 속성을 포함합니다.

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

각 항목의 의미는 다음과 같습니다.

  • [INSTANCE_NAME]은 새 인스턴스의 이름입니다.
  • [IMAGE_FAMILY]사용 가능한 이미지 계열 중 하나입니다.
  • [IMAGE_PROJECT]는 이미지가 속한 이미지 프로젝트입니다.
  • [DISK_IMAGE]는 보조 디스크의 소스 이미지입니다. 사용할 수 있는 이미지의 목록을 보려면 gcloud compute images list를 실행하세요. 빈 디스크의 경우 디스크 이미지나 이미지 프로젝트를 지정하지 마세요.
  • [DISK_IMAGE_PROJECT]는 디스크 이미지가 속한 이미지 프로젝트입니다. 빈 디스크의 경우 디스크 이미지나 이미지 프로젝트를 지정하지 마세요.
  • [SIZE_GB]는 보조 디스크의 크기입니다.
  • [DISK_TYPE]은 영구 디스크의 유형(pd-standard 또는 pd-ssd)입니다.

디스크를 사용하기 전에 먼저 디스크를 포맷하고 마운트하세요.

보안 VM을 지원하는 이미지를 선택한 경우, 필요하면 다음 플래그 중 하나를 사용하여 인스턴스의 보안 VM 설정을 변경할 수 있습니다.

  • --no-shielded-secure-boot: 보안 부팅을 사용 중지합니다. 보안 부팅을 사용하면 부팅 수준 및 커널 수준의 멀웨어와 루트킷으로부터 VM 인스턴스를 보호할 수 있습니다. 자세한 내용은 보안 부팅을 참조하세요.
  • --no-shielded-vtpm: vTPM(Virtual Trusted Platform Module)을 사용 중지합니다. vTPM을 사용하면 신중한 부팅을 통해 VM 사전 부팅 및 부팅 무결성을 검증할 수 있습니다. 자세한 내용은 vTPM(Virtual Trusted Platform Module)을 참조하세요.

  • --no-shielded-integrity-monitoring: 무결성 모니터링을 중지합니다. 무결성 모니터링을 사용하면 Stackdriver Monitoring을 사용하여 보안 VM 인스턴스의 부팅 무결성을 모니터링할 수 있습니다. 자세한 내용은 무결성 모니터링을 참조하세요.

다음 예에서는 보안 부팅이 사용 중지된 상태로 Ubuntu 보안 VM 인스턴스를 만듭니다.

gcloud beta compute instances create my-instance \
  --image-family ubuntu-1804-lts --image-project gce-uefi-images \
  --no-shielded-secure-boot

API

API에서 인스턴스를 시작하려면 요청을 보내고 다음 속성을 지정합니다.

  • 소스 이미지
  • 네트워크 인터페이스
  • 머신 유형
  • VPC 네트워크가 커스텀 모드 VPC 네트워크인 경우 인스턴스를 만들 서브넷도 지정해야 합니다.
  • 보안 VM을 지원하는 이미지를 선택한 경우 필요하다면 다음 부울 요청 본문 항목을 사용하여 인스턴스의 보안 VM 설정을 변경할 수 있습니다.

    • enableSecureBoot: 보안 부팅을 사용 설정 또는 중지합니다. 보안 부팅을 사용하면 부팅 수준 및 커널 수준의 멀웨어와 루트킷으로부터 VM 인스턴스를 보호할 수 있습니다. 자세한 내용은 보안 부팅을 참조하세요.
    • enableVtpm: Virtual Trusted Platform Module(vTPM)을 사용 설정 또는 중지합니다. vTPM은 신중한 부팅을 사용 설정하여 VM 사전 부팅 및 부팅 무결성을 검증합니다. 자세한 내용은 vTPM(Virtual Trusted Platform Module)을 참조하세요.

    • enableIntegrityMonitoring: 무결성 모니터링을 사용 설정 또는 중지합니다. 무결성 모니터링을 사용하면 Stackdriver Monitoring 보고서를 통해 보안 VM 인스턴스의 런타임 부팅 무결성을 모니터링하고 확인할 수 있습니다. 자세한 내용은 무결성 모니터링을 참조하세요.

리소스 속성을 결정한 후 요청 본문을 만들고 API 요청을 만듭니다. API 요청 작성 및 API 응답 처리에 대한 자세한 내용은 API 요청 생성 및 응답 처리 문서를 참조하세요.

API 요청 만들기

API 클라이언트 라이브러리를 사용하는 경우 REST API를 직접 호출하거나 instances().insert 메서드를 사용하여 새 인스턴스를 시작할 수 있습니다. 다음은 각 옵션의 예시입니다.

REST

API에서 동일한 요청 본문을 사용하여 인스턴스 URI에 대한 POST 요청을 작성합니다. 각 추가 디스크에 대해 initializeParams 속성을 사용하여 VM 인스턴스를 만들 때 보조 비부팅 디스크를 128개까지 추가할 수 있습니다. 공개 또는 비공개 이미지를 사용하여 추가 디스크를 만듭니다. 빈 디스크를 추가하려면 이미지 소스를 지정하지 마세요. 필요할 경우 diskSizeGb, diskType, labels 속성을 포함할 수 있습니다.

def addInstance(http, listOfHeaders):
  url = "https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances"

  body = {
    "name": "[INSTANCE_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",
       "initializeParams": {
         "sourceImage": "projects/[IMAGE_PROJECT]/global/images/family/[IMAGE]",
         "labels": {
           "key": "[LABEL_KEY]",
           "value": "[LABEL_VALUE]",
         }
       }
     },
     {
       "initializeParams": {
          "diskSizeGb": "[SIZE_GB]",
          "sourceImage":"[IMAGE]"
       },
       {
       "initializeParams": {
          "diskSizeGb": "[SIZE_GB]"
       }
     }]

  bodyContentURLEncoded = urllib.urlencode(bodyContent)
  resp, content = http.request(uri=url, method="POST", body=dumps(bodyContent), headers=listOfHeaders)

  print resp
  print content

각 항목의 의미는 다음과 같습니다.

  • [INSTANCE_NAME]은 인스턴스의 이름입니다.
  • [PROJECT_ID]는 프로젝트 ID입니다.
  • [ZONE]은 이 인스턴스의 영역입니다.
  • [MACHINE_TYPE]은 인스턴스의 머신 유형입니다.
  • [IMAGE_PROJECT]debian-cloud, ubuntu-os-cloud등 이미지가 속한 이미지 프로젝트입니다.
  • [IMAGE]사용 가능한 공개 이미지 계열 중 하나입니다. 예를 들어 family/debian-9는 최신 버전의 Debian 9 이미지를 사용합니다. 또는 family/ 경로 없이 debian-9-stretch-v20170619와 같은 특정 이미지 버전을 사용할 수 있습니다. 빈 디스크의 경우 이미지 소스를 지정하지 마세요.
  • [LABEL_KEY][LABEL_VALUE]는 디스크에 적용되는 라벨입니다. labels 필드는 선택사항입니다.
  • [SIZE_GB]는 디스크 크기입니다.
  • [DISK_TYPE]은 영구 디스크의 유형(pd-standard 또는 pd-ssd)입니다.

빈 보조 디스크가 있는 인스턴스를 만드는 경우 게스트 운영체제에서 사용할 수 있도록 해당 디스크를 포맷하고 마운트합니다.

Python용 Cloud 클라이언트 라이브러리

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()

커스텀 이미지를 사용하여 인스턴스 만들기

커스텀 이미지는 사용자 프로젝트에만 속합니다. 커스텀 이미지로 인스턴스를 만들려면 먼저 커스텀 이미지가 있어야 합니다. 커스텀 이미지를 만드는 방법은 커스텀 이미지 만들기를 참조하세요.

Console

  1. VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 프로젝트를 선택하고 계속을 클릭합니다.
  3. 인스턴스 만들기 버튼을 클릭합니다.
  4. 인스턴스 이름을 지정합니다.
  5. 필요할 경우 이 인스턴스의 영역을 변경합니다.

    참고: 여러 영역에서 사용되도록 각 리전 내에서 영역 목록이 무작위로 선택됩니다.

  6. 인스턴스의 머신 구성을 선택합니다.

  7. 부팅 디스크 섹션에서 변경을 클릭하여 부팅 디스크를 구성합니다.
    MBR 파티션의 제한사항을 고려하여 2TB 이하의 부팅 디스크를 만듭니다.

  8. 커스텀 이미지 탭을 선택합니다.

  9. 드롭다운 목록에서 프로젝트가 선택되어 있는지 확인합니다.

  10. 원하는 이미지를 선택하고 선택 버튼을 클릭합니다.

  11. VM 인스턴스에 HTTP 또는 HTTPS 트래픽을 허용하려면 HTTP 트래픽 허용 또는 HTTPS 트래픽 허용을 선택합니다.

    Cloud Console이 인스턴스에 네트워크 태그를 추가하고 tcp:80(HTTP) 또는 tcp:443(HTTPS)에서 들어오는 모든 트래픽을 허용하는 인그레스 방화벽 규칙을 만듭니다. 네트워크 태그는 방화벽 규칙을 인스턴스와 연결합니다. 자세한 내용은 Virtual Private Cloud 문서의 방화벽 규칙 개요를 참조하세요.

  12. VM 인스턴스에 보조 비부팅 디스크를 추가하려면 다음 안내를 따르세요.

    1. 관리, 보안, 디스크, 네트워킹, 단독 임대를 클릭합니다.
    2. 디스크 탭을 선택합니다.
    3. 추가 디스크에서 새 디스크 추가를 클릭합니다.
    4. 디스크의 이름, 유형, 소스 유형, 모드, 삭제 규칙을 지정합니다.
    5. 완료를 클릭합니다.
    6. 필요에 따라 디스크를 추가합니다.
  13. 만들기 버튼을 클릭하여 인스턴스를 만들고 시작합니다.

gcloud

gcloud compute instances create 명령줄 도구를 실행하여 커스텀 이미지로 인스턴스를 만듭니다.

gcloud compute instances create [INSTANCE_NAME] \
--image [IMAGE_NAME] \
--image-family [IMAGE_FAMILY]

각 항목의 의미는 다음과 같습니다.

  • [INSTANCE_NAME]은 인스턴스의 이름입니다.
  • [IMAGE_NAME]은 이미지의 이름입니다.
  • [IMAGE]는 선택 필드입니다. 개인 또는 공개 이미지를 사용합니다. 이미지를 지정하지 않으면 빈 디스크가 만들어집니다.

커스텀 이미지를 이미지 계열의 일부로 만든 경우 이미지 이름 대신 이미지 계열을 지정합니다. 이렇게 하면 인스턴스가 자동으로 이미지 계열 내에서 지원 중단되지 않은 최신 이미지를 사용합니다.

인스턴스를 만들 때 보조 비부팅 디스크를 128개까지 추가할 수 있습니다. 만든 각 보조 디스크에 --create-disk 플래그를 지정합니다. 공개 또는 스톡 이미지에서 보조 디스크를 만들려면 --create-disk 플래그에 imageimage-project 속성을 지정합니다. 빈 디스크를 만들려면 이러한 속성을 포함하지 마세요. 필요하다면 디스크 sizetype 속성을 포함할 수 있습니다.

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

각 항목의 의미는 다음과 같습니다.

  • [INSTANCE_NAME]은 새 인스턴스의 이름입니다.
  • [IMAGE_FAMILY]사용 가능한 이미지 계열 중 하나입니다.
  • [IMAGE_PROJECT]는 이미지가 속한 이미지 프로젝트입니다.
  • [DISK_IMAGE]는 보조 디스크의 소스 이미지입니다. 사용할 수 있는 이미지의 목록을 보려면 gcloud compute images list를 실행하세요. 빈 디스크의 경우 디스크 이미지나 이미지 프로젝트를 지정하지 마세요.
  • [DISK_IMAGE_PROJECT]는 디스크 이미지가 속한 이미지 프로젝트입니다. 빈 디스크의 경우 디스크 이미지나 이미지 프로젝트를 지정하지 마세요.
  • [SIZE_GB]는 보조 디스크의 크기입니다.
  • [DISK_TYPE]은 영구 디스크의 유형(pd-standard 또는 pd-ssd)입니다.

디스크를 사용하기 전에 먼저 디스크를 포맷하고 마운트하세요.

API

API에서 커스텀 이미지로 인스턴스를 만드는 프로세스는 공개적으로 사용 가능한 이미지로 인스턴스를 만드는 프로세스와 동일합니다. sourceImage URI에서 자신의 프로젝트 ID와 이미지 이름을 제공합니다.

각 추가 디스크에 대해 initializeParams 속성을 사용하여 VM 인스턴스를 만들 때 보조 비부팅 디스크를 128개까지 만들 수 있습니다. 공개 또는 비공개 이미지를 사용하여 추가 디스크를 만듭니다. 빈 디스크를 추가하려면 sourceImage 값 없이 initializeParams 항목을 정의합니다.

...
"initializeParams" :{
   "sourceImage": "global/images/[IMAGE_NAME]"
},
{
"initializeParams": {
   "diskSizeGb": "[SIZE_GB]",
   "sourceImage": "[IMAGE]",
   "diskType": "[DISK_TYPE]"
 },
 {
 "initializeParams": {
 "diskSizeGb": "[SIZE_GB]",
 "diskType": "[DISK_TYPE]"
 }
}...]

각 항목의 의미는 다음과 같습니다.

  • [PROJECT_ID]는 프로젝트 ID입니다.
  • [IMAGE_NAME]debian-9-stretch-v20170619와 같은 특정 이미지입니다. 또는 이미지 계열을 지정할 수 있습니다. 예를 들어 family/debian-9는 최신 버전의 Debian 9 이미지를 반환합니다.
  • [IMAGE]는 보조 디스크의 소스 이미지입니다. 빈 디스크의 경우 이미지 소스를 지정하지 마세요.
  • [SIZE_GB]는 디스크 크기입니다.
  • [DISK_TYPE]은 영구 디스크의 유형(pd-standard 또는 pd-ssd)입니다.

디스크를 사용하기 전에 먼저 디스크를 포맷하고 마운트하세요.

공유된 이미지를 사용하여 인스턴스 만들기

다른 사용자가 공유한 이미지를 사용하여 새 인스턴스를 만들 수 있습니다.

Console

  1. VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 프로젝트를 선택하고 계속을 클릭합니다.
  3. 인스턴스 만들기 버튼을 클릭합니다.
  4. 인스턴스 이름을 지정합니다.
  5. 필요할 경우 이 인스턴스의 영역을 변경합니다.

  6. 인스턴스의 머신 구성을 선택합니다.

  7. 부팅 디스크 섹션에서 변경을 클릭하여 부팅 디스크를 구성합니다.

    MBR 파티션의 제한사항을 고려하여 2TB 이하의 부팅 디스크를 만듭니다.

  8. 커스텀 이미지 탭을 선택합니다.

  9. 드롭다운 목록에서 이미지 프로젝트를 선택합니다.

  10. 원하는 이미지를 선택하고 선택 버튼을 클릭합니다.

  11. VM 인스턴스에 HTTP 또는 HTTPS 트래픽을 허용하려면 HTTP 트래픽 허용 또는 HTTPS 트래픽 허용을 선택합니다.

    Cloud Console이 인스턴스에 네트워크 태그를 추가하고 tcp:80(HTTP) 또는 tcp:443(HTTPS)에서 들어오는 모든 트래픽을 허용하는 인그레스 방화벽 규칙을 만듭니다. 네트워크 태그는 방화벽 규칙을 인스턴스와 연결합니다. 자세한 내용은 Virtual Private Cloud 문서의 방화벽 규칙 개요를 참조하세요.

  12. VM 인스턴스에 보조 비부팅 디스크를 추가하려면 다음 안내를 따르세요.

    1. 관리, 보안, 디스크, 네트워킹, 단독 임대를 클릭합니다.
    2. 디스크 탭을 선택합니다.
    3. 추가 디스크에서 새 디스크 추가를 클릭합니다.
    4. 디스크의 이름, 유형, 소스 유형, 모드, 삭제 규칙을 지정합니다.
    5. 완료를 클릭합니다.
    6. 필요에 따라 디스크를 추가합니다.
  13. 만들기 버튼을 클릭하여 인스턴스를 만들고 시작합니다.

gcloud

gcloud compute instances create 명령어를 사용하여 인스턴스를 만들고, --image--image-project 플래그를 사용하여 이미지 이름과 이미지가 상주하는 프로젝트를 지정합니다.

gcloud compute instances create [INSTANCE_NAME] \
    --image [IMAGE] \
    --image-project [IMAGE_PROJECT]

각 항목의 의미는 다음과 같습니다.

  • [INSTANCE_NAME]은 새 인스턴스의 이름입니다.
  • [IMAGE]은 이미지의 이름입니다.
  • [IMAGE_PROJECT]는 이미지가 속한 프로젝트입니다.

명령어가 정상적으로 실행되면 gcloud에서 새 인스턴스의 속성으로 응답합니다.

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  n1-standard-1               10.240.0.4   104.198.53.60  RUNNING

인스턴스를 만들 때 보조 비부팅 디스크를 128개까지 추가할 수 있습니다. 만든 각 보조 디스크에 --create-disk 플래그를 지정합니다. 공개 또는 스톡 이미지에서 보조 디스크를 만들려면 --create-disk 플래그에 imageimage-project 속성을 지정합니다. 빈 디스크를 만들려면 이러한 속성을 포함하지 마세요. 필요하다면 디스크 sizetype 속성을 포함합니다.

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

각 항목의 의미는 다음과 같습니다.

  • [INSTANCE_NAME]은 새 인스턴스의 이름입니다.
  • [IMAGE_FAMILY]사용 가능한 이미지 계열 중 하나입니다.
  • [IMAGE_PROJECT]는 이미지가 속한 이미지 프로젝트입니다.
  • [DISK_IMAGE]는 보조 디스크의 소스 이미지입니다. 사용할 수 있는 이미지의 목록을 보려면 gcloud compute images list를 실행하세요. 빈 디스크의 경우 디스크 이미지나 이미지 프로젝트를 지정하지 마세요.
  • [DISK_IMAGE_PROJECT]는 디스크 이미지가 속한 이미지 프로젝트입니다. 빈 디스크의 경우 디스크 이미지나 이미지 프로젝트를 지정하지 마세요.
  • [SIZE_GB]는 보조 디스크의 크기입니다.
  • [DISK_TYPE]은 영구 디스크의 유형(pd-standard 또는 pd-ssd)입니다.

디스크를 사용하기 전에 먼저 디스크를 포맷하고 마운트하세요.

API

API 안내에 따라 공개 이미지를 사용하여 인스턴스를 만들되 요청 본문에 image 필드를 지정합니다. 모든 추가 디스크에 initializeParams 필드를 지정하여 보조 비부팅 디스크를 128개까지 추가할 수 있습니다. 빈 디스크를 추가하려면 이미지 소스를 지정하지 마세요. 필요할 경우 diskSizeGb, diskType, labels 속성을 지정할 수 있습니다.

...
image: "projects/[PROJECT_ID]/global/images/[IMAGE]

{
 "initializeParams": {
    "diskSizeGb": "[SIZE_GB]",
    "sourceImage": "[IMAGE]"
       }
   {
  "initializeParams": {
  "diskSizeGb": "[SIZE_GB]"
   }
 }...]

각 항목의 의미는 다음과 같습니다.

  • [PROJECT_ID]는 이미지가 포함된 프로젝트입니다.
  • [IMAGE]는 소스 이미지입니다.
  • [SIZE_GB]는 디스크 크기입니다.
  • [IMAGE]는 보조 디스크의 소스 이미지입니다. 빈 디스크의 경우 이미지 소스를 지정하지 마세요.
  • [DISK_TYPE]은 영구 디스크의 유형(pd-standard 또는 pd-ssd)입니다.

디스크를 사용하기 전에 먼저 디스크를 포맷하고 마운트하세요.

스냅샷을 사용하여 VM 인스턴스 만들기

스냅샷으로 부팅 영구 디스크를 백업한 경우 해당 스냅샷을 사용하여 인스턴스를 만들 수 있습니다.

동일한 부팅 디스크 스냅샷을 사용하여 여러 인스턴스를 만들려는 경우에는 커스텀 이미지를 만들고 해당 이미지를 대신 사용하여 인스턴스를 만드는 것이 좋습니다. 커스텀 이미지는 스냅샷보다 더 빠르고 효율적으로 인스턴스의 부팅 디스크를 만들 수 있습니다.

스냅샷을 사용하여 새 VM 인스턴스 부팅 디스크 만들기

새 인스턴스를 만들 때 부팅 디스크의 스냅샷을 새 부팅 디스크로 복원할 수 있습니다.

Console

  1. VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 프로젝트를 선택하고 계속을 클릭합니다.
  3. 인스턴스 만들기 버튼을 클릭합니다.
  4. 인스턴스 이름을 지정합니다.
  5. 필요할 경우 이 인스턴스의 영역을 변경합니다.

  6. 인스턴스의 머신 구성을 선택합니다.

  7. 부팅 디스크 섹션에서 변경을 클릭하여 부팅 디스크를 구성합니다.

    MBR 파티션의 제한사항을 고려하여 2TB 이하의 부팅 디스크를 만듭니다.

  8. 스냅샷 탭을 클릭하고 목록에서 스냅샷을 선택합니다.

  9. 선택을 클릭합니다.

  10. VM 인스턴스에 HTTP 또는 HTTPS 트래픽을 허용하려면 HTTP 트래픽 허용 또는 HTTPS 트래픽 허용을 선택합니다.

    Cloud Console이 인스턴스에 네트워크 태그를 추가하고 tcp:80(HTTP) 또는 tcp:443(HTTPS)에서 들어오는 모든 트래픽을 허용하는 인그레스 방화벽 규칙을 만듭니다. 네트워크 태그는 방화벽 규칙을 인스턴스와 연결합니다. 자세한 내용은 Virtual Private Cloud 문서의 방화벽 규칙 개요를 참조하세요.

  11. VM 인스턴스에 보조 비부팅 디스크를 추가하려면 다음 안내를 따르세요.

    1. 관리, 보안, 디스크, 네트워킹, 단독 임대를 클릭합니다.
    2. 디스크 탭을 선택합니다.
    3. 추가 디스크에서 새 디스크 추가를 클릭합니다.
    4. 디스크의 이름, 유형, 소스 유형, 모드, 삭제 규칙을 지정합니다.
    5. 완료를 클릭합니다.
    6. 필요에 따라 디스크를 추가합니다.
  12. 만들기 버튼을 클릭하여 인스턴스를 만들고 시작합니다.

gcloud

gcloud compute instances create 명령어를 사용하고 --source-snapshot 플래그를 포함합니다.

gcloud compute instances create [INSTANCE_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]

각 항목의 의미는 다음과 같습니다.

  • [INSTANCE_NAME]은 새 인스턴스의 이름입니다.
  • [BOOT_SNAPSHOT_NAME]은 새 인스턴스의 부팅 디스크로 복원하려는 부팅 디스크 스냅샷의 이름입니다.
  • [BOOT_DISK_NAME]은 이 인스턴스의 새 부팅 디스크 이름입니다.
  • [BOOT_DISK_SIZE]는 새 부팅 디스크의 크기(GB)입니다. 크기는 스냅샷이 만들어진 소스 디스크보다 크거나 같아야 합니다. 이 속성은 선택사항입니다.
  • [BOOT_DISK_TYPE]은 영구 디스크의 유형(pd-standard 또는 pd-ssd)입니다. 이 플래그는 선택사항입니다.

비부팅 스냅샷을 복원하려는 경우 필요하다면 --create-disk 플래그를 추가하고 source-snapshot을 지정합니다. --create-disk 플래그를 반복하여 복원할 각 스냅샷에 대한 비부팅 디스크를 만듭니다. 인스턴스를 만들 때 비부팅 디스크를 15개까지 추가할 수 있습니다.

--create-disk source-snapshot=[SNAPSHOT_NAME],name=[DISK_NAME],size=[DISK_SIZE],type=[DISK_TYPE]

각 항목의 의미는 다음과 같습니다.

  • [SNAPSHOT_NAME]은 복원할 비부팅 스냅샷의 이름입니다.
  • [DISK_NAME]은 이 인스턴스에 대한 새 비부팅 디스크의 이름입니다.
  • [DISK_SIZE]는 새 디스크의 크기(GB)입니다. 크기는 스냅샷이 만들어진 소스 디스크보다 크거나 같아야 합니다. 이 속성은 선택사항입니다.
  • [DISK_TYPE]은 영구 디스크의 유형(pd-standard 또는 pd-ssd)입니다. 이 플래그는 선택사항입니다.

API

API를 사용하여 스냅샷에서 인스턴스를 만들 때 다음 제한 사항이 적용됩니다.

  • 하나의 영구 디스크만 부팅 영구 디스크로 사용될 수 있습니다.
  • 해당 인스턴스의 첫 번째 디스크로 부팅 영구 디스크를 연결해야 합니다.
  • source 속성을 지정하면 initializeParams 속성을 지정할 수 없습니다. source 제공은 부팅 영구 디스크가 이미 있음을 나타내지만 initializeParams 속성은 Compute Engine이 부팅 영구 디스크를 새로 만들어야 함을 나타냅니다.

    부팅 디스크 스냅샷을 사용하여 인스턴스를 만들려면 disks 속성에서 sourceSnapshot 필드를 지정합니다. 필요한 경우 새 부팅 디스크에 대해 diskSizeGbdiskType 속성을 지정합니다.

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances
{
  "name": "[INSTANCE_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]은 새 인스턴스를 만들 영역입니다.
  • [INSTANCE_NAME]은 스냅샷을 복원할 인스턴스의 이름입니다.
  • [MACHINE_TYPE]은 인스턴스의 머신 유형입니다.
  • [BOOT_SNAPSHOT_NAME]은 새 인스턴스의 부팅 디스크를 만드는 데 사용할 스냅샷의 이름입니다.
  • [BOOT_DISK_SIZE]는 새 부팅 디스크의 크기(GB)입니다. 크기는 스냅샷이 만들어진 소스 디스크보다 크거나 같아야 합니다. 이 속성은 선택사항입니다.
  • [BOOT_DISK_TYPE]은 부팅 디스크의 유형(pd-standard 또는 pd-ssd)입니다. 이 속성은 선택사항입니다.

비부팅 스냅샷을 새 인스턴스로 복원

비부팅 스냅샷은 인스턴스가 데이터 스토리지로만 사용하는 보조 영구 디스크의 백업입니다. 새 인스턴스를 만들 때마다 비부팅 스냅샷을 새 디스크로 복원할 수 있습니다. 또는 비부팅 스냅샷을 기존 인스턴스로 복원할 수도 있습니다.

비부팅 스냅샷을 새 인스턴스로 복원하려면 인스턴스를 만들 때 다음 추가 단계를 따르세요.

Console

콘솔에서 비부팅 스냅샷을 새 인스턴스로 복원할 때 먼저 각 스냅샷에서 디스크를 만듭니다. 그런 다음 새 인스턴스를 만들 때 새 디스크를 연결합니다.

  1. 각 비부팅 스냅샷을 새 디스크로 복원합니다.

    1. 디스크 페이지로 이동합니다.

      디스크 페이지로 이동

    2. 디스크 만들기를 클릭합니다.
    3. 디스크 이름을 지정합니다.
    4. 이 디스크의 리전 및 영역을 선택합니다.

      참고: 인스턴스와 디스크가 동일한 영역에 있는 경우에만 인스턴스에 디스크를 연결할 수 있습니다.

    5. 디스크 유형을 선택합니다.

    6. 소스 유형에서 스냅샷을 선택합니다.

    7. 소스 스냅샷 필드에서 새 디스크로 복원할 비부팅 스냅샷을 선택합니다.

    8. 만들기를 클릭하여 디스크를 만듭니다.

    9. 이 단계를 반복하여 복원할 각 스냅샷에서 디스크를 만듭니다. 인스턴스를 만들 때 보조 비부팅 디스크를 15개까지 추가할 수 있습니다.

  2. VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  3. 인스턴스 만들기를 클릭합니다.

  4. 인스턴스 이름을 지정합니다.

  5. 이 인스턴스의 리전 및 영역을 선택합니다.

    참고: 인스턴스와 디스크가 동일한 영역에 있는 경우에만 인스턴스에 디스크를 연결할 수 있습니다.

  6. 인스턴스의 머신 유형을 선택합니다.

  7. 외부 트래픽 수신을 허용하려면 인스턴스의 방화벽 규칙을 변경합니다.

  8. 디스크를 인스턴스에 연결하려면 다음 안내를 따르세요.

    1. 관리, 보안, 디스크, 네트워킹, 단독 테넌시를 클릭합니다.
    2. 디스크 탭을 선택합니다.
    3. 추가 디스크에서 기존 디스크 연결을 클릭합니다.
    4. 디스크 필드에서 이 인스턴스에 연결할 디스크를 선택합니다.
    5. 디스크의 모드 및 삭제 규칙을 지정합니다.
    6. 완료를 클릭합니다.
    7. 연결하려는 디스크마다 이 단계를 반복합니다. 인스턴스를 만들 때 보조 비부팅 디스크를 15개까지 추가할 수 있습니다.
  9. 만들기를 클릭하여 인스턴스를 만들고 시작합니다.

  10. 디스크를 사용하기 전에 먼저 디스크를 포맷하고 마운트합니다.

gcloud

gcloud compute instances create 명령어를 사용하여 새 인스턴스를 만듭니다. 복원할 각 비부팅 스냅샷에 대해 --create-disk 플래그를 포함하고 source-snapshot을 지정합니다. 인스턴스를 만들 때 보조 비부팅 디스크를 15개까지 추가할 수 있습니다.

예를 들어 2개의 비부팅 스냅샷을 새 인스턴스로 복원하려면 다음 명령어를 사용합니다.

gcloud compute instances create \
    --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]

각 항목의 의미는 다음과 같습니다.

  • [SNAPSHOT_1_NAME][SNAPSHOT_2_NAME]은 복원할 비부팅 스냅샷의 이름입니다.
  • [DISK_1_NAME][DISK_2_NAME]은 이 인스턴스의 새 비부팅 디스크 이름입니다.
  • [DISK_1_SIZE][DISK_2_SIZE]는 각 새 비부팅 디스크의 크기(GB)입니다. 크기는 스냅샷이 만들어진 소스 디스크보다 크거나 같아야 합니다. 이 속성은 선택사항입니다.
  • [DISK_1_TYPE][DISK_2_TYPE]은 영구 디스크의 유형입니다(pd-standard 또는 pd-ssd). 이 플래그는 선택사항입니다.

API

API를 사용하여 비부팅 스냅샷을 새 인스턴스로 복원하는 경우 다음 제한 사항이 적용됩니다.

  • 하나의 영구 디스크만 부팅 영구 디스크가 될 수 있습니다.
  • 해당 인스턴스의 첫 번째 디스크로 부팅 영구 디스크를 연결해야 합니다.
  • source 속성을 지정하면 initializeParams 속성을 지정할 수 없습니다. source 제공은 부팅 영구 디스크가 이미 있음을 나타내지만 initializeParams 속성은 Compute Engine이 부팅 영구 디스크를 새로 만들어야 함을 나타냅니다.

베타 API를 사용하여 initializeParams 속성에서 sourceSnapshot 필드를 지정합니다. 만들려는 모든 비부팅 디스크의 initializeParams 속성을 반복하여 보조 비부팅 디스크를 15개까지 추가할 수 있습니다. 필요할 경우 만드는 모든 디스크에 대해 diskSizeGbdiskType 속성을 지정할 수 있습니다.

예를 들어 2개의 비부팅 스냅샷을 새 인스턴스로 복원하려면 다음과 같이 요청합니다.

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances
{
  "name": "[INSTANCE_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]은 새 인스턴스를 만들 영역입니다.
  • [INSTANCE_NAME]은 스냅샷을 복원할 인스턴스의 이름입니다.
  • [MACHINE_TYPE]은 인스턴스의 머신 유형입니다.
  • [SNAPSHOT_1_NAME][SNAPSHOT_2_NAME]는 새 인스턴스의 새 비부팅 디스크로 복원하려는 비부팅 스냅샷의 이름입니다.
  • [DISK_SIZE]는 해당 디스크의 크기(GB)입니다. 이 속성은 선택사항이지만 스냅샷이 만들어진 소스 디스크보다 크거나 같아야 합니다.
  • [DISK_TYPE]은 해당 영구 디스크의 유형(pd-standard 또는 pd-ssd)입니다. 이 속성은 선택사항입니다.

컨테이너 이미지를 사용하여 인스턴스 만들기

Compute Engine 인스턴스에서 컨테이너를 배포 및 실행하려면 인스턴스를 만들 때 컨테이너 이미지 이름과 선택적 구성 매개변수를 지정합니다. Compute Engine에서는 Docker가 설치된 컨테이너 최적화 OS 공개 이미지의 최신 버전을 사용하여 인스턴스를 만듭니다. 그런 다음 VM이 시작될 때 Compute Engine이 컨테이너를 시작합니다. 자세한 내용은 VM에 컨테이너 배포를 참조하세요.

Console

  1. VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 인스턴스 만들기를 클릭합니다.
  3. 인스턴스 이름을 지정합니다.
  4. 컨테이너 섹션에서 이 VM 인스턴스에 컨테이너 이미지를 배포합니다 체크박스를 선택합니다.
  5. 사용할 컨테이너 이미지를 지정합니다.
    • 예를 들어 gcr.io/cloud-marketplace/google/nginx1:1.12를 지정하여 Cloud Launcher에서 NGINX 1.12 컨테이너 이미지를 선택할 수 있습니다.
    • Docker Hub의 컨테이너 이미지를 사용하는 경우 항상 Docker 이미지의 전체 이름을 지정합니다. 예를 들어 Apache 컨테이너 이미지를 배포하려면 이미지 이름을 docker.io/httpd:2.4로 지정합니다.
  6. 필요한 경우 고급 컨테이너 옵션을 클릭합니다. 자세한 내용은 컨테이너 실행을 위한 옵션 구성을 참조하세요.
  7. 만들기를 클릭하여 인스턴스를 만들고, 인스턴스를 부팅하고, 컨테이너를 시작합니다.

gcloud

gcloud compute instances create-with-container 명령어를 실행합니다.

gcloud compute instances create-with-container [INSTANCE_NAME] \
     --container-image [CONTAINER_IMAGE]

각 항목의 의미는 다음과 같습니다.

  • [INSTANCE_NAME]은 새 인스턴스의 이름입니다.
  • [CONTAINER_IMAGE]은 컨테이너 이미지의 이름입니다.

예를 들어 다음 명령어는 컨테이너 이미지 gcr.io/cloud-marketplace/google/nginx1:1.12를 시작하고 실행하는 nginx-vm VM 인스턴스를 만듭니다.

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

Docker Hub의 컨테이너 이미지를 사용하는 경우 항상 Docker 이미지의 전체 이름을 지정해야 합니다. 예를 들어 Apache 컨테이너 이미지를 배포하려면 이미지 이름을 docker.io/httpd:2.4로 지정합니다.

다른 Google Cloud 서비스에 대한 액세스 권한이 있는 인스턴스 만들기

다른 Google Cloud 서비스에 액세스해야 하는 VM 인스턴스에서 앱을 실행하려는 경우 인스턴스를 만들기 전에 서비스 계정을 만든 다음, 안내에 따라 인스턴스를 서비스 계정으로 실행하도록 설정합니다. 서비스 계정은 사용자 인증 정보를 다른 Google Cloud 서비스에 액세스하기 위해 애플리케이션 코드에서 사용할 수 있는 특수한 계정입니다.

서비스 계정에 대한 자세한 내용은 서비스 계정 개요를 참조하세요.

특정 서브넷에 인스턴스 만들기

기본적으로 Google Cloud는 프로젝트마다 default라는 자동 모드 VPC 네트워크를 만듭니다. 네트워크 세부정보를 지정하지 않고 인스턴스를 만들면 Compute Engine은 이 기본 VPC 네트워크를 사용하고 인스턴스와 동일한 리전에 있는 자동 서브넷을 사용합니다.

자동 모드 또는 커스텀 모드 VPC 네트워크에 수동으로 만든 다른 네트워크 또는 서브넷을 사용하려면 인스턴스를 만들 때 서브넷을 지정해야 합니다.

Console

  1. VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 프로젝트를 선택하고 계속을 클릭합니다.
  3. 인스턴스 만들기 버튼을 클릭합니다.
  4. 인스턴스 이름을 지정합니다.
  5. 필요할 경우 이 인스턴스의 영역을 변경합니다.

  6. VM 인스턴스에 HTTP 또는 HTTPS 트래픽을 허용하려면 HTTP 트래픽 허용 또는 HTTPS 트래픽 허용을 선택합니다.

    Cloud Console이 인스턴스에 네트워크 태그를 추가하고 tcp:80(HTTP) 또는 tcp:443(HTTPS)에서 들어오는 모든 트래픽을 허용하는 인그레스 방화벽 규칙을 만듭니다. 네트워크 태그는 방화벽 규칙을 인스턴스와 연결합니다. 자세한 내용은 Virtual Private Cloud 문서의 방화벽 규칙 개요를 참조하세요.

  7. 관리, 보안, 디스크, 네트워킹, 단독 테넌시 섹션을 펼칩니다.

  8. 네트워킹 탭의 네트워크 인터페이스에서 네트워크 세부정보를 지정합니다.

    1. 네트워크 필드에서 사용자가 만든 서브넷이 포함된 VPC 네트워크를 선택합니다.
    2. 서브넷 필드에서 인스턴스가 사용할 서브넷을 선택합니다.
  9. VM 인스턴스에 보조 비부팅 디스크를 추가하려면 다음 단계를 따릅니다.

    1. 관리, 보안, 디스크, 네트워킹, 단독 임대를 클릭합니다.
    2. 디스크 탭을 선택합니다.
    3. 추가 디스크에서 새 디스크 추가를 클릭합니다.
    4. 디스크의 이름, 유형, 소스 유형, 모드, 삭제 규칙을 지정합니다.
    5. 완료를 클릭합니다.
    6. 필요에 따라 디스크를 추가합니다.
  10. 만들기 버튼을 클릭하여 인스턴스를 만들고 시작합니다.

gcloud

gcloud 명령줄 도구를 사용하여 동일한 안내에 따라 이미지 또는 스냅샷을 사용하여 인스턴스를 만들고 gcloud compute instances create 명령어를 실행할 때 --subnet [SUBNET_NAME]--zone [ZONE_NAME] 플래그를 추가합니다.

gcloud compute instances create [INSTANCE_NAME] --subnet [SUBNET_NAME] \
--zone [ZONE_NAME]

각 항목의 의미는 다음과 같습니다.

  • [INSTANCE_NAME]은 인스턴스의 이름입니다.
  • [SUBNET_NAME]은 서브넷의 이름입니다. 네트워크는 지정된 서브넷에서 추론됩니다.
  • [ZONE_NAME]은 인스턴스가 생성되는 영역의 이름입니다(예: europe-west1-b). 인스턴스의 리전은 영역에서 추론됩니다.

인스턴스를 만들 때 보조 비부팅 디스크를 128개까지 추가할 수 있습니다. 만든 각 보조 디스크에 --create-disk 플래그를 지정합니다. 공개 또는 스톡 이미지에서 보조 디스크를 만들려면 --create-disk 플래그에 imageimage-project 속성을 지정합니다. 빈 디스크를 만들려면 이러한 속성을 포함하지 마세요. 필요하다면 디스크 sizetype 속성을 포함합니다.

gcloud compute instances create [INSTANCE_NAME] \
--subnet [SUBNET_NAME] \
--zone [ZONE_NAME] \
--image-family [IMAGE_FAMILY] \
--image-project [IMAGE_PROJECT] \
--create-disk image=[DISK_IMAGE],image-project=[DISK_IMAGE_PROJECT],size=[SIZE_GB],type=[DISK_TYPE]

각 항목의 의미는 다음과 같습니다.

  • [INSTANCE_NAME]은 새 인스턴스의 이름입니다.
  • [SUBNET_NAME]은 서브넷의 이름입니다.
  • [ZONE_NAME]은 인스턴스가 생성되는 영역의 이름입니다(예: europe-west1-b).
  • [IMAGE_FAMILY]사용 가능한 이미지 계열 중 하나입니다.
  • [IMAGE_PROJECT]는 이미지가 속한 이미지 프로젝트입니다.
  • [DISK_IMAGE]는 보조 디스크의 소스 이미지입니다. 사용할 수 있는 이미지의 목록을 보려면 gcloud compute images list를 실행합니다. 빈 디스크의 경우 디스크 이미지나 이미지 프로젝트를 지정하지 마세요.
  • [DISK_IMAGE_PROJECT]는 디스크 이미지가 속한 이미지 프로젝트입니다. 빈 디스크의 경우 디스크 이미지나 이미지 프로젝트를 지정하지 마세요.
  • [SIZE_GB]는 보조 디스크의 크기입니다.
  • [DISK_TYPE]은 영구 디스크의 유형(pd-standard 또는 pd-ssd)입니다.

디스크를 사용하기 전에 먼저 디스크를 포맷하고 마운트하세요.

API

API 안내에 따라 이미지 또는 스냅샷을 사용하여 인스턴스를 만들고 요청 본문에 subnet 필드를 지정합니다. 최대 128개의 보조 비부팅 디스크를 추가하려면 만드는 모든 디스크에 initializeParams 속성을 사용합니다. 빈 디스크를 추가하려면 소스 이미지를 추가하지 마세요. 필요할 경우 diskSizeGb, diskType, labels 속성을 지정할 수 있습니다.

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

각 항목의 의미는 다음과 같습니다.

  • [IMAGE]는 보조 디스크의 소스 이미지입니다. 빈 디스크의 경우 이미지 소스를 지정하지 마세요.
  • [SIZE_GB]는 디스크 크기입니다.
  • [DISK_TYPE]은 영구 디스크의 유형(pd-standard 또는 pd-ssd)입니다.

디스크를 사용하기 전에 먼저 디스크를 포맷하고 마운트하세요.

다음 단계