머신 이미지를 만든 후 이 이미지를 사용하여 소스 컴퓨팅 인스턴스의 사본을 만들 수 있습니다. 머신 이미지 사용에 대한 자세한 내용은 머신 이미지를 사용하는 경우를 참조하세요.
머신 이미지에는 인스턴스를 클론하는 데 필요한 대부분의 정보와 데이터가 포함되어 있습니다.
머신 이미지는 변경할 수 없습니다. 하지만 머신 이미지에서 인스턴스를 만들 때 대부분의 머신 이미지 속성을 재정의 할 수 있습니다.
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분 동안 소스 머신 이미지에서 인스턴스를 최대 6개까지 만들 수 있습니다. 이 한도를 초과하면 인스턴스 만들기 작업이 실패하고 다음과 비슷한 오류가 반환됩니다.
Operation rate exceeded for resource 'projects/test/global/machineImages/machine-image-1'. Too frequent operations from the source resource.
정의된 한도 (60분 동안 인스턴스 6개)보다 더 많은 인스턴스를 만들려면 소스 인스턴스에서 추가 머신 이미지를 만들거나 새 인스턴스에서 단기 머신 이미지를 만듭니다. 그런 다음 새 머신 이미지에서 필요한 개수의 인스턴스를 만들 수 있습니다.
Google Cloud 콘솔을 사용해서는 리전 디스크가 연결된 머신 이미지에서 인스턴스를 만들 수 없습니다. Google Cloud CLI 또는 REST를 사용하고 연결된 각 리전 디스크에 대해
replicaZones
및deviceName
매개변수를 지정하세요. 자세한 내용은 속성 재정의를 사용해서 머신 이미지에서 인스턴스 만들기를 참고하세요.Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.
...에서 VM 만들기 메뉴에서 머신 이미지를 선택합니다.
표시된 머신 이미지에서 VM 만들기 창에서 다음을 수행합니다.
머신 이미지를 선택합니다.
만들기를 클릭하여 인스턴스를 만들고 시작합니다.
INSTANCE_NAME
: 인스턴스의 이름ZONE
: 인스턴스의 영역입니다.SOURCE_MACHINE_IMAGE_NAME
: 인스턴스를 만들 머신 이미지PROJECT_ID
: 프로젝트 ID입니다.ZONE
: 인스턴스의 영역입니다.INSTANCE_NAME
: 인스턴스 이름입니다.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
- 머신 이미지에서 인스턴스를 만드는 동안에는 디스크 이름 외의 연결된 디스크 속성을 재정의할 수 없습니다.
머신 이미지에서 리전 디스크의
deviceName
과 함께 연결된 각 리전 디스크에 대해replicaZones
매개변수를 지정해야 합니다.머신 이미지를 생성하는 데 사용된 소스 인스턴스와 새 인스턴스가 동일한 프로젝트 및 리전에 속하는 경우 다음 사항이 적용됩니다.
- 소스 인스턴스와 새 인스턴스의 속성 대부분이 동일합니다. 자동 할당되는 임시 IP 주소 등의 속성은 다릅니다.
- 새 인스턴스를 만들 때 소스 인스턴스가 여전히 존재하는 경우 새 인스턴스는 소스 인스턴스와 동일한 이름과 영역을 사용할 수 없습니다.
머신 이미지를 생성하는 데 사용된 소스 인스턴스와 새 인스턴스가 동일한 프로젝트에 속하지만 리전이 다른 경우 다음 사항이 적용됩니다.
- 새 인스턴스의 모든 영역 및 리전 리소스를 재정의해야 합니다. 예를 들어 소스 인스턴스가 다른 리전에 속한 머신 이미지에서 인스턴스를 만드는 경우 서브네트워크 및 리전 방화벽 규칙과 같은 리전 리소스를 재정의해야 합니다. 그러나 부하 분산기 및 서비스 계정과 같은 전역 리소스는 이를 수정하지 않는 한 재정의할 필요가 없습니다.
Google Cloud 콘솔에서 인스턴스 만들기 페이지로 이동합니다.
...에서 VM 만들기 메뉴에서 머신 이미지를 선택합니다.
머신 이미지에서 VM 만들기 창이 표시되면 템플릿을 선택한 다음
맞춤설정을 클릭합니다.선택사항: 다른 구성 옵션을 지정합니다. 자세한 내용은 인스턴스 생성 중 구성 옵션을 참고하세요.
만들기를 클릭하여 인스턴스를 만들고 시작합니다.
PROJECT_ID
: 프로젝트 ID입니다.ZONE
: 인스턴스의 영역입니다.INSTANCE_NAME
: 인스턴스 이름입니다.NEW_MACHINE_TYPE
: 인스턴스에 사용할 머신 유형입니다.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
: 인스턴스를 만드는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 CLI
명령어를 사용합니다.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
명령어를 사용하여 머신 이미지에서 인스턴스를 만듭니다.gcloud compute instances create INSTANCE_NAME \ --project=INSTANCE_PROJECT_ID \ --zone=ZONE \ --source-machine-image=projects/MACHINE_IMAGE_PROJECT/global/machineImages/MACHINE_IMAGE_NAME \ --service-account=SERVICE_ACCOUNT_EMAIL \ --subnet=SUBNET
다음을 바꿉니다.
INSTANCE_PROJECT_ID
: 인스턴스를 만들 프로젝트의 프로젝트 ID입니다.INSTANCE_NAME
: 인스턴스 이름ZONE
: 인스턴스의 영역입니다.MACHINE_IMAGE_PROJECT
: 머신 이미지가 있는 프로젝트의 프로젝트 IDMACHINE_IMAGE_NAME
: 인스턴스를 만들 머신 이미지SERVICE_ACCOUNT_EMAIL
: 인스턴스에 연결할 서비스 계정의 이메일 주소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
- 머신 이미지 자세히 알아보기
- Compute Engine 인스턴스 만들기 자세히 알아보기
REST
로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공한 사용자 인증 정보를 사용합니다.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
자세한 내용은 Google Cloud 인증 문서의 REST 사용을 위한 인증을 참고하세요.
필요한 역할
머신 이미지에서 Compute Engine 인스턴스를 만드는 데 필요한 권한을 얻으려면 관리자에게 Compute Engine 인스턴스 또는 프로젝트에 대한 Compute 인스턴스 관리자 (v1) (
roles/compute.instanceAdmin.v1
) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
제한사항
머신 이미지에서 인스턴스를 만들 때는 다음 제한사항이 적용됩니다.
머신 이미지에서 인스턴스 만들기 (재정의 안 함)
속성을 변경하지 않고 완전히 머신 이미지를 기반으로 하는 인스턴스를 만들려면 이 메서드를 사용합니다.
콘솔
gcloud
gcloud compute instances create
명령어를 사용하여 머신 이미지에서 인스턴스를 만듭니다.gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --source-machine-image=SOURCE_MACHINE_IMAGE_NAME
다음을 바꿉니다.
예시
예를 들어 다음
gcloud
명령어를 사용하여my-machine-image
라는 머신 이미지의us-east1-b
영역에my-instance
라는 인스턴스를 만들 수 있습니다.gcloud compute instances create my-instance \ --zone=us-east1-b \ --source-machine-image=my-machine-image
인스턴스가 생성되면 다음과 유사한 결과가 출력됩니다.
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": "INSTANCE_NAME", "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL" }
다음을 바꿉니다.
속성 재정의를 사용하여 머신 이미지에서 인스턴스 만들기
주로 머신 이미지를 기반으로 인스턴스를 만들지만 몇 가지 변경 사항이 있는 경우 재정의 동작을 사용할 수 있습니다. 재정의 동작을 사용하려면 인스턴스를 만들 때 기존 머신 이미지 속성을 재정의할 속성을 전달합니다.
재정의 기능을 사용할 때 다음 사항을 고려하세요.
콘솔
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
인스턴스 생성 중에 머신 이미지 속성을 재정의하려면
instances.insert
메서드에 대한POST
요청을 생성합니다. 요청 본문에sourceMachineImage
매개변수와 필요한 재정의를 포함합니다. 인스턴스 생성 중에 일반적으로 설정하는 속성을 추가할 수 있습니다. 예를 들어 머신 유형을 재정의하려면 API 호출에machineType
매개변수를 포함합니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { "name": "INSTANCE_NAME", "machineType": "zones/ZONE/machineTypes/NEW_MACHINE_TYPE", "sourceMachineImage": "SOURCE_MACHINE_IMAGE_URL" }
다음을 바꿉니다.
재정의 동작
Compute Engine API의 재정의 동작은 RFC 7396에서 설명하는 JSON 병합 패치 규칙을 따릅니다. 요약하면 다음 규칙이 적용됩니다.
예를 들어 머신 이미지에서 VM을 만들고 VM을 사용해서 리전 디스크를 만들려면
replicaZones
옵션을 지정할 수 있도록 디스크에 대해 재정의를 사용합니다.disks
필드가 반복 필드이기 때문에 리전 디스크뿐만 아니라 연결된 모든 디스크 및 부팅 디스크에 대해서도 디스크 구성을 지정해야 합니다.POST https://compute.googleapis.com/compute/v1/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" ] } } ] }
다른 프로젝트의 머신 이미지를 사용하여 인스턴스 만들기
다른 프로젝트의 머신 이미지를 사용하여 인스턴스를 만들면 해당 소스 프로젝트에 연결된 서비스 계정에 액세스하지 못할 수 있습니다. 다른 프로젝트에 있는 머신 이미지를 사용하여 인스턴스를 만들려면 머신 이미지에 대한 액세스 권한이 있는지 확인하고 새 인스턴스의 서비스 계정 속성을 재정의해야 합니다.
공유 VPC 네트워크를 사용하는 프로젝트 간에 머신 이미지를 공유하는 경우 머신 이미지에서 인스턴스를 만들 때 공유 VPC 세부정보를 명시적으로 지정해야 합니다. 예를 들어 비호스트 프로젝트에서 인스턴스를 만들 때
--network
,--subnet
,--network-interface
플래그를 사용하여 호스트 프로젝트의 공유 VPC 세부정보를 제공합니다.다음 섹션에서는 Google Cloud CLI를 사용하여 다른 프로젝트에 있는 머신 이미지에서 인스턴스를 만드는 방법을 설명합니다.
다음 단계
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2025-01-30(UTC)
-