머신 이미지를 만든 후 이 이미지를 사용하여 소스 VM 인스턴스의 사본을 만들 수 있습니다. 머신 이미지 사용에 대한 자세한 내용은 머신 이미지를 사용하는 경우를 참조하세요.
머신 이미지에는 인스턴스를 클론하는 데 필요한 대부분의 정보와 데이터가 포함되어 있습니다.
머신 이미지는 변경할 수 없습니다. 하지만 머신 이미지에서 인스턴스를 만들 때 대부분의 머신 이미지 속성을 재정의 할 수 있습니다.
Google Cloud 콘솔, Google Cloud CLI 또는 REST 중 하나를 사용하여 머신 이미지에서 인스턴스를 만들 수 있습니다
시작하기 전에
-
아직 인증을 설정하지 않았다면 설정합니다.
인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다.
로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
60분 동안 소스 머신 이미지에서 VM을 최대 6개까지 만들 수 있습니다. 이 한도를 초과하면 인스턴스 만들기 작업이 실패하고 다음과 비슷한 오류가 반환됩니다.
Operation rate exceeded for resource 'projects/test/global/machineImages/machine-image-1'. Too frequent operations from the source resource.
정의된 한도(60분 동안 VM 6개)보다 더 많은 VM을 만들려면 소스 VM에서 추가 머신 이미지를 만들거나 새 VM에서 단기 머신 이미지를 만듭니다. 그런 후 새 머신 이미지에서 필요한 개수의 VM을 만들 수 있습니다.
Google Cloud 콘솔을 사용해서는 리전 영구 디스크가 연결되어 있는 머신 이미지에서 VM을 만들 수 없습니다. Google Cloud CLI 또는 REST를 사용하고 연결된 각 리전 영구 디스크에 대해
replicaZones
및deviceName
매개변수를 지정하세요. 자세한 내용은 속성 재정의를 사용해서 머신 이미지에서 VM 만들기를 참조하세요.Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.
머신 이미지의 새 VM 인스턴스를 클릭합니다.
머신 이미지를 선택하고 계속을 클릭합니다.
선택사항: VM 세부정보를 맞춤설정합니다.
만들기를 클릭합니다.
VM_NAME
: 만들려는 VM의 이름입니다.ZONE
: VM의 영역입니다.SOURCE_MACHINE_IMAGE_NAME
: VM을 만들 머신 이미지입니다.PROJECT_ID
: 프로젝트 ID입니다.ZONE
: VM의 영역입니다.VM_NAME
: 만들려는 VM의 이름입니다.SOURCE_MACHINE_IMAGE_URL
: VM을 만드는 데 사용할 머신 이미지의 전체 또는 부분 URL입니다. 예를 들어myProject
라는 프로젝트에my-machine-image
라는 머신 이미지가 있는 경우 유효한 URL은 다음과 같습니다.https://www.googleapis.com/compute/v1/projects/myProject/global/machineImages/my-machine-image
projects/myProject/global/machineImages/my-machine-image
global/machineImages/my-machine-image
- 머신 이미지에서 VM을 만드는 동안에는 디스크 이름 외의 연결된 디스크 속성을 재정의할 수 없습니다.
머신 이미지에서 리전 디스크의
deviceName
과 함께 연결된 각 리전 영구 디스크에 대해replicaZones
매개변수를 지정해야 합니다.머신 이미지와 새 VM을 생성하는 데 사용된 소스 VM이 동일한 프로젝트 및 리전에 속하는 경우 다음 사항이 적용됩니다.
- 소스 인스턴스와 새 VM의 속성 대부분이 동일합니다. 자동 할당되는 임시 IP 주소 등의 속성은 다릅니다.
- 새 VM을 만들 때 소스 VM 인스턴스가 여전히 존재하는 경우 새 VM은 소스 인스턴스와 동일한 이름과 영역을 사용할 수 없습니다.
머신 이미지와 새 VM을 생성하는 데 사용된 소스 VM이 동일한 프로젝트에 속하지만 리전이 다른 경우 다음 사항이 적용됩니다.
- 새 VM의 모든 영역 및 리전 리소스를 재정의해야 합니다. 예를 들어 소스 인스턴스가 다른 리전에 속한 머신 이미지에서 VM 인스턴스를 만드는 경우 서브네트워크 및 리전 방화벽 규칙과 같은 리전 리소스를 재정의해야 합니다. 그러나 부하 분산기 및 서비스 계정과 같은 전역 리소스는 이를 수정하지 않는 한 재정의할 필요가 없습니다.
Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.
머신 이미지의 새 VM 인스턴스를 클릭합니다.
머신 이미지를 선택하고 계속을 클릭합니다.
선택사항: VM 세부정보를 맞춤설정합니다.
만들기를 클릭합니다.
설정 세부정보는 이미지에서 VM 인스턴스 만들기를 참조하세요.
PROJECT_ID
: 프로젝트 ID입니다.ZONE
: VM의 영역입니다.VM_NAME
: 만들려는 VM의 이름입니다.NEW_MACHINE_TYPE
: VM에 사용할 머신 유형입니다.SOURCE_MACHINE_IMAGE_URL
: 인스턴스를 만드는 데 사용할 머신 이미지의 전체 또는 부분 URL입니다. 예를 들어myProject
라는 프로젝트에my-machine-image
라는 머신 이미지가 있는 경우 유효한 URL은 다음과 같습니다.https://www.googleapis.com/compute/v1/projects/myProject/global/machineImages/my-machine-image
projects/myProject/global/machineImages/my-machine-image
global/machineImages/my-machine-image
- 기본 필드를 재정의하면 머신 이미지의 해당 기본 필드가 요청의 기본 필드 값으로 바뀝니다. 기본 필드에는
machineType
,name
등의 매개변수가 포함됩니다. - 반복되는 필드를 재정의하면 해당 속성에 대해 반복되는 모든 값이 요청에 제공된 해당 값으로 바뀝니다.
반복되는 필드는 일반적으로
list
유형의 속성입니다. 예를 들어disks
및networkInterfaces
는 반복되는 필드입니다. nested object
를 재정의하면 머신 이미지의 객체가 요청의 해당 객체 사양과 병합됩니다. 중첩된 객체가 반복되는 필드 내에 있는 경우 해당 필드는 반복되는 필드의 규칙에 따라 처리됩니다. 라벨은 이 규칙의 예외이며 라벨이object
유형이더라도 반복되는 필드로 간주됩니다.다른 프로젝트에 저장된 머신 이미지에 대한 액세스 권한을 부여합니다.
권한은 소스 프로젝트 또는 머신 이미지에 부여할 수 있습니다.
gcloud compute machine-images add-iam-policy-binding
명령어를 사용하여 머신 이미지에 대한 권한을 부여합니다.gcloud compute machine-images add-iam-policy-binding MACHINE_IMAGE_NAME \ --project=MACHINE_IMAGE_PROJECT \ --member='ACCOUNT_EMAIL' \ --role='roles/compute.admin'
다음을 바꿉니다.
MACHINE_IMAGE_PROJECT
: 소스 머신 이미지가 포함된 프로젝트의 프로젝트 ID입니다.MACHINE_IMAGE_NAME
: 권한 결합을 추가할 머신 이미지의 이름입니다.ACCOUNT_EMAIL
: VM을 만드는serviceAccount
또는user
의 이메일 주소입니다. 필수 프리픽스를 포함하도록 이메일의 형식이 지정되었는지 확인합니다. 프리픽스는 다음 중 하나여야 합니다.user:
이메일 주소가 사용자 계정과 연결된 경우 지정합니다. 예를 들면user:user@example.com
입니다.serviceAccount:
이메일 주소가 서비스 계정과 연결된 경우 지정합니다. 예를 들면serviceAccount:123456789000-compute@developer.gserviceaccount.com
입니다.
예시
예를 들어
my-machine-image
라는 머신 이미지에 대한compute.admin
결합을 서비스 계정 이메일123456789000-compute@developer.gserviceaccount.com
에 추가하려면 다음gcloud
명령어를 사용합니다.gcloud compute machine-images add-iam-policy-binding my-machine-image \ --project=machine-image-project \ --member='serviceAccount:123456789000-compute@developer.gserviceaccount.com' \ --role='roles/compute.admin'
gcloud compute instances create
명령어를 실행하는 사용자에게 머신 이미지와 연결된 서비스 계정에 대한 서비스 계정 사용자 역할(roles/iam.serviceAccountUser
)을 부여합니다.gcloud compute instances create
명령어를 사용하여 머신 이미지에서 VM을 만듭니다.gcloud compute instances create VM_NAME \ --project=VM_PROJECT_ID \ --zone=ZONE \ --source-machine-image=projects/MACHINE_IMAGE_PROJECT/global/machineImages/MACHINE_IMAGE_NAME \ --service-account=SERVICE_ACCOUNT_EMAIL --subnet=SUBNET
다음을 바꿉니다.
VM_PROJECT_ID
: VM을 만들 프로젝트의 프로젝트 IDVM_NAME
: 만들려는 VM의 이름ZONE
: VM의 영역MACHINE_IMAGE_PROJECT
: 머신 이미지가 있는 프로젝트의 프로젝트 IDMACHINE_IMAGE_NAME
: VM을 만들 머신 이미지SERVICE_ACCOUNT_EMAIL
: VM에 연결할 서비스 계정의 이메일 주소SUBNET
: 서브넷과 인스턴스가 같은 프로젝트에 있으면 SUBNET을 인스턴스와 동일한 리전에 있는 서브넷의 이름으로 바꿉니다.공유 VPC 네트워크에서 서브넷을 지정하려면
SUBNET
을projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
형식의 문자열로 바꿉니다.다음을 바꿉니다.
HOST_PROJECT_ID
: 공유 VPC 호스트 프로젝트의 프로젝트 IDREGION
: 서브넷의 리전입니다.SUBNET_NAME
: 서브넷의 이름
예시
예를 들어 다음 명령어는
my-machine-image
라는 머신 이미지에서us-east1-b
영역의vm-project
에my-instance
라는 VM을 만듭니다.--service-account
플래그는 새로 만든 VM에 연결할 서비스 계정을 지정합니다. 이 플래그를 제공하지 않으면 소스 서비스 계정을 두 프로젝트 간에 공유할 수 없으며 작업이 실패합니다.gcloud compute instances create my-instance \ --project=vm-project \ --zone=us-east1-b \ --source-machine-image=projects/machine-image-project/global/machineImages/my-machine-image \ --service-account=000123456789-compute@developer.gserviceaccount.com
VM이 생성되면 다음과 유사한 결과가 출력됩니다.
Created [https://www.googleapis.com/compute/v1/projects/project-12345/zones/us-east1-b/instances/my-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS my-instance us-east1-b e2-standard-2 192.0.2.1 203.224.0.113 RUNNING
- 머신 이미지 자세히 알아보기
- VM 인스턴스 만들기 자세히 알아보기
REST
로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공하는 사용자 인증 정보를 사용합니다.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
자세한 내용은 Google Cloud 인증 문서의 REST 사용 인증을 참조하세요.
제한사항
머신 이미지에서 VM을 만들 때 다음 제한사항이 적용됩니다.
머신 이미지를 사용하여 VM 만들기(재정의 안 함)
속성에 대한 변경 없이 전적으로 머신 이미지를 기반으로 VM을 만들려면 이 방법을 사용합니다.
Console
gcloud
gcloud compute instances create
명령어를 사용하여 머신 이미지에서 인스턴스를 만듭니다.gcloud compute instances create VM_NAME \ --zone=ZONE \ --source-machine-image=SOURCE_MACHINE_IMAGE_NAME
다음을 바꿉니다.
예시
예를 들어 다음
gcloud
명령어를 사용하여my-machine-image
라는 머신 이미지에서us-east1-b
영역에my-instance
라는 VM을 만들 수 있습니다.gcloud compute instances create my-instance \ --zone=us-east1-b \ --source-machine-image=my-machine-image
VM이 생성되면 다음과 유사한 결과가 출력됩니다.
Created [https://www.googleapis.com/compute/v1/projects/project-12345/zones/us-east1-b/instances/my-instance]. NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS my-instance us-east1-b e2-standard-2 192.0.2.1 203.224.0.113 RUNNING
REST
API에서
instances.insert
메서드에 대해POST
요청을 작성합니다. 요청 본문에 다음 매개변수를 포함합니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL" }
다음을 바꿉니다.
속성 재정의를 사용해서 머신 이미지에서 VM 만들기
주로 머신 이미지를 기반으로 VM을 만들되 몇 가지 변경사항을 적용하면 재정의 동작을 사용할 수 있습니다. 재정의 동작을 사용하려면 인스턴스를 만들 때 기존 머신 이미지 속성을 재정의할 속성을 전달합니다.
재정의 기능을 사용할 때 다음 사항을 고려하세요.
Console
gcloud
gcloud compute instances create
명령어를 사용하여 머신 이미지에서 인스턴스를 만들고 재정의할 속성을 추가합니다.예를 들어 다음
gcloud
명령어를 사용하여my-machine-image
라는 머신 이미지에서us-east1-b
영역에my-instance
라는 VM을 만들 수 있습니다. 이 예시에서는 머신 유형을 변경하고, 호스트 유지보수 정책을 중지하고,regional-disk-0
이름으로 리전 영구 디스크를 구성하도록 재정의가 적용됩니다.gcloud compute instances create my-instance \ --zone=us-east1-b \ --source-machine-image=my-machine-image \ --machine-type=e2-standard-2 \ --maintenance-policy=TERMINATE \ --create-disk=device-name=boot-device-0,boot=true,auto-delete=true \ --create-disk=device-name=regional-disk-0,\ replica-zones=^:^us-east1-b:us-east1-c,boot=false
REST
VM 생성 중에 머신 이미지 속성을 재정의하려면
instances.insert()
API를 사용하고 요청 본문에서 재정의할 필드를 제공합니다.API에서
instances.insert
메서드에 대해POST
요청을 작성합니다. 요청 본문에sourceMachineImage
매개변수와 필요한 재정의를 포함합니다. 인스턴스 생성 중에 일반적으로 설정하는 속성을 추가할 수 있습니다. 예를 들어 머신 유형을 변경하려면 API 호출에machineType
매개변수를 포함합니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "VM_NAME", "machineType": "zones/ZONE/machineTypes/NEW_MACHINE_TYPE", "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL" }
다음을 바꿉니다.
재정의 동작
API의 재정의 동작은 RFC 7396에서 설명하는 JSON 병합 패치 규칙을 따릅니다. 요약하면 다음 규칙이 적용됩니다.
예를 들어 머신 이미지에서 VM을 만들고 VM을 사용해서 리전 영구 디스크를 만들려면
replicaZones
옵션을 지정할 수 있도록 디스크에 대해 재정의를 사용합니다.disks
필드가 반복 필드이기 때문에 리전 디스크뿐만 아니라 연결된 모든 디스크 및 부팅 디스크에 대해서도 디스크 구성을 지정해야 합니다.POST /compute/projects/my-proj/zones/us-west1-a/instances { "name": "vm-from-image", "sourceMachineImage": "global/machineImages/my-machine-image", "disks": [ { "kind": "compute#attachedDisks", "boot": true, "autoDelete": true, "deviceName": "boot-device", "initializeParams": { "sourceImage": "projects/my-proj/global/images/my-image", "diskType": "projects/my-proj/zones/us-west1-a/diskTypes/pd-standard", } }, { "kind": "compute#attachedDisk", "boot": false, "autoDelete": true, "deviceName": "regional-device-0", "initializeParams": { "diskType": "projects/my-proj/zones/us-west1-a/diskTypes/pd-standard", "replicaZones": [ "projects/my-proj/zones/us-west1-a", "projects/my-proj/zones/us-west1-c" ] } } ] }
다른 프로젝트의 머신 이미지를 사용하여 VM 만들기
다른 프로젝트의 머신 이미지를 사용하여 VM을 만들면 해당 소스 프로젝트에 연결된 서비스 계정에 액세스하지 못할 수 있습니다. 다른 프로젝트에 있는 머신 이미지를 사용하여 VM을 만들려면 머신 이미지에 대한 액세스 권한이 있는지 확인하고 새 VM의 서비스 계정 속성을 재정의해야 합니다.
공유 VPC 네트워크를 사용하는 프로젝트 간에 머신 이미지를 공유하는 경우 머신 이미지에서 VM을 만들 때 공유 VPC 세부정보를 명시적으로 지정해야 합니다. 예를 들어 비호스트 프로젝트에서 VM을 만들 때
--network
,--subnet
,--network-interface
옵션을 사용하여 호스트 프로젝트의 공유 VPC 세부정보를 제공합니다.다음 섹션에서는 Google Cloud CLI를 사용하여 다른 프로젝트에 있는 머신 이미지에서 VM을 만드는 방법을 설명합니다.
다음 단계
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2024-09-05(UTC)
-