커스텀 이미지를 Cloud Storage로 내보내기


Compute Engine 부팅 디스크 데이터를 Compute Engine 프로젝트 외부로 이전해야 하는 경우 부팅 디스크 이미지를 tar.gz 파일로 Cloud Storage에 내보낼 수 있습니다. Compute Engine에서 새 영구 디스크를 만들 때 사용할 영구 디스크 이미지를 만들어야 하는 경우 커스텀 이미지 만들기를 참조하세요.

이미지를 Cloud Storage로 내보내서 커스텀 이미지를 백업 또는 공유할 수 있습니다. 이 방법은 개별 이미지를 이미지에 액세스할 수 없는 프로젝트와 공유하는 데 적합합니다. 또는 이미지나 이미지를 포함하는 프로젝트에서 Compute Engine 이미지 사용자 역할을 부여하면 이미지를 공유할 수 있습니다.

다음 다이어그램은 커스텀 이미지 만들기와 재사용의 몇 가지 일반적 워크플로를 보여 줍니다.

커스텀 이미지 만들기 및 재사용
그림 1. 커스텀 이미지 만들기 및 재사용 예시

시작하기 전에

  • 이미지 페이지를 읽습니다.
  • 이미지를 내보내려는 프로젝트에 신뢰할 수 있는 이미지 정책이 정의되어 있으면 허용된 게시자 목록에 projects/compute-image-importprojects/compute-image-tools를 추가합니다.
  • 이미지를 내보내기 전에 요구사항을 충족하는 방법을 알아보려면 VM 이미지 가져오기 및 내보내기 기본 요건을 참조하세요.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 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

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공한 사용자 인증 정보를 사용합니다.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      자세한 내용은 Google Cloud 인증 문서의 REST 사용을 위한 인증을 참고하세요.

제한 및 제약사항

이미지 내보내기 프로세스에는 다음과 같은 제한사항이 적용됩니다.

일반 제한

이미지를 내보내면 이미지를 내보내는 머신에 세션이 생성됩니다. 이 세션은 내보내기 프로세스가 완료될 때까지 활성 상태로 유지되어야 합니다. 내보내기 프로세스가 완료되기 전에 세션이 종료되면 임시 디스크, VM 인스턴스, 스토리지 버킷과 같은 임시 리소스가 삭제되지 않을 수 있습니다. 이 경우 이러한 임시 리소스를 수동으로 삭제해야 합니다.

내보내기 프로세스는 Cloud Build를 사용하여 이미지를 내보냅니다. Cloud Build 세션은 최대 24시간 동안 지속됩니다. 이미지가 매우 커서 내보내는 데 24시간 이상 걸리는 경우 이미지를 수동으로 내보내기할 수 있습니다.

VPC 서비스 제어 제한사항

VPC 서비스 제어로 보호되는 프로젝트의 경우 다음 방법 중 하나를 사용합니다.

  • 이미지가 있는 같은 프로젝트에서 내보내기
  • 수동으로 이미지 내보내기

단일 명령어로 이미지 내보내기

Cloud Storage로 이미지 내보내기

Google Cloud 콘솔, Google Cloud CLI 또는 REST를 사용하여 이미지를 내보낼 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 이미지 페이지로 이동합니다.

    이미지로 이동

  2. 내보내려는 이미지의 이름을 클릭하여 이미지 세부정보 페이지로 이동합니다. Google에서 제공하는 공개 이미지는 내보낼 수 없습니다. 이전에 만들거나 가져온 이미지만 내보낼 수 있습니다.

  3. 이미지 세부정보 페이지에서 내보내기를 클릭하여 이미지 내보내기 페이지를 엽니다.

  4. 이미지 내보내기 페이지에서 이미지의 내보내기 형식을 선택합니다.

  5. 찾아보기를 클릭하여 이미지를 내보낼 Cloud Storage 위치를 선택합니다.

  6. 기존 Cloud Storage 위치를 선택하여 이미지를 내보냅니다. 또는 안내에 따라 새 Cloud Storage 버킷을 만들고 새 Cloud Storage 버킷의 이름을 입력합니다.

  7. Cloud Storage를 선택한 후 내보낸 이미지의 파일 이름을 선택합니다. 기본 파일 이름을 사용하거나 직접 파일 이름을 선택할 수 있습니다.

  8. Cloud Storage를 선택하고 이미지의 파일 이름을 입력한 후 선택을 클릭합니다.

  9. 이미지 내보내기 페이지에서 내보내기를 클릭합니다. 내보내기를 선택하면 Google Cloud 콘솔에 이미지 내보내기 프로세스를 볼 수 있는 이미지 내보내기 기록이 표시됩니다. 이미지 내보내기 프로세스에 대한 자세한 내용을 보려면 Cloud Build ID를 클릭하여 이미지 내보내기 로그를 보고 다운로드할 수 있는 이미지 내보내기 세부정보 페이지로 이동합니다.

  10. Storage 페이지로 이동하여 내보낸 이미지에 액세스합니다.

    Storage로 이동

gcloud

이미지를 Cloud Storage로 내보내는 가장 좋은 방법은 gcloud compute images export 명령어를 사용하는 것입니다. 이 명령어는 Daisy를 사용하여 이미지를 내보내는 데 필요한 여러 단계를 연결합니다. 예를 들어 gcloud compute images create 명령어를 사용하여 이미 이미지를 만들었다고 가정합니다.

Google Cloud CLI를 사용하여 다음을 실행합니다.

gcloud compute images export \
    --destination-uri DESTINATION_URI \
    --image IMAGE_NAME

다음을 바꿉니다.

  • DESTINATION_URI: 내보낸 이미지 파일의 Cloud Storage URI 대상입니다.
  • IMAGE_NAME: 내보낼 디스크 이미지의 이름입니다.

기본적으로 이미지는 tar 및 gzip으로 압축된 disk.raw 파일인 Compute Engine 형식으로 내보내집니다. QEMU 디스크 이미지 유틸리티에서 지원되는 다른 형식으로 이미지를 내보내려면 --export-format 플래그를 사용할 수 있습니다. 유효한 형식에는 vmdk, vhdx, vpc, vdi, qcow2가 있습니다.

예시

예를 들어 다음 명령어는 my-image라는 이미지를 my-project에서 my-bucket이라는 Cloud Storage 버킷으로 내보냅니다. 기본적으로 이미지는 disk.raw file로 내보내고 tar.gz 파일 형식으로 압축됩니다.

gcloud compute images export \
    --destination-uri gs://my-bucket/my-image.tar.gz \
    --image my-image \
    --project my-project

플래그에 대해서는 gcloud compute images export 참조 문서를 확인하세요.

REST

Cloud Build API에 POST 요청을 전송합니다.

POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
{
  "timeout": "7200s",
  "steps":[
    {
      "args":[
        "-timeout=7000s",
        "-source_image=SOURCE_IMAGE",
        "-client_id=api",
        "-format=IMAGE_FORMAT",
        "-destination_uri=DESTINATION_URI"
      ],
      "name":"gcr.io/compute-image-tools/gce_vm_image_export:release",
      "env":[
        "BUILD_ID=$BUILD_ID"
      ]
    }
  ],
  "tags":[
    "gce-daisy",
    "gce-daisy-image-export"
  ]
}

다음을 바꿉니다.

  • PROJECT_ID: 내보낼 이미지가 포함된 프로젝트의 프로젝트 ID입니다.
  • SOURCE_IMAGE: 내보낼 이미지의 이름입니다.
  • IMAGE_FORMAT: 내보낸 이미지의 형식입니다. 유효한 형식에는 vmdk, vhdx, vpc, vdi, qcow2가 있습니다.
  • DESTINATION_URI: 이미지 파일을 내보낼 Cloud Storage URI 위치입니다. 예를 들면 gs://my-bucket/my-exported-image.vmdk입니다.

제공할 수 있는 추가 args 값은 VM 이미지 내보내기 GitHub 페이지의 선택적 플래그 섹션을 참조하세요.

응답 예시

다음 샘플 응답은 반환된 출력과 유사합니다.

{
"name": "operations/build/myproject-12345/operation-1578608233418",
"metadata": {
 "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata",
 "build": {
  "id": "3a2055bc-ccbd-4101-9434-d376b88b8940",
  "status": "QUEUED",
  "createTime": "2019-10-02T18:59:13.393492020Z",
  "steps": [
   {
    "name": "gcr.io/compute-image-tools/gce_vm_image_export:release",
    "env": [
     "BUILD_ID=3a2055bc-ccbd-4101-9434-d376b88b8940"
    ],
    "args": [
     "-timeout=7056s",
     "-source_image=my-image",
     "-client_id=api",
     "-format=vmdk",
     "-destination_uri=gs://my-bucket/my-exported-image.vmdk"
    ]
   }
  ],
  "timeout": "7200s",
  "projectId": "myproject-12345",
  "logsBucket": "gs://123456.cloudbuild-logs.googleusercontent.com",
  "options": {
   "logging": "LEGACY"
  },
  "logUrl": "https://console.cloud.google.com/cloud-build/builds/3a2055bc-ccbd-4101-9434-d376b88b8940?project=123456"
 }
 }

빌드를 모니터링하는 몇 가지 방법은 다음과 같습니다.

  • 반환된 build-id를 사용하여 projects.builds.get 요청을 실행합니다.
  • 제공된 logUrl에서 호스팅된 로그를 검토합니다.

커스텀 Compute Engine 서비스 계정을 사용하여 프로젝트에서 이미지 내보내기

이미지를 내보내는 동안 프로젝트에 임시 가상 머신(VM) 인스턴스가 생성됩니다. 이 임시 VM의 이미지 내보내기 도구는 인증을 받아야 합니다.

서비스 계정은 VM에 연결된 ID입니다. 서비스 계정 액세스 토큰은 인스턴스 메타데이터 서버를 통해 액세스할 수 있으며 VM에서 이미지 내보내기 도구를 인증하는 데 사용됩니다.

기본적으로 내보내기 프로세스는 프로젝트의 기본 Compute Engine 서비스 에이전트를 사용합니다. 하지만 프로젝트에서 기본 Compute Engine 서비스 계정이 사용 중지되어 있거나 커스텀 Compute Engine 서비스 계정을 사용하려는 경우 서비스 계정을 만든 후 이를 내보내기 프로세스에 지정해야 합니다.

Google Cloud CLI 또는 REST를 사용하여 이미지를 내보낼 수 있습니다.

gcloud

  1. 서비스 계정을 만들고 최소 역할을 할당합니다. 서비스 계정 만들기에 대한 자세한 내용은 서비스 계정 만들기 및 관리를 참조하세요.

    지정된 Compute Engine 서비스 계정에는 최소한 다음 역할이 할당되어 있어야 합니다.

    • roles/compute.storageAdmin
    • roles/storage.objectAdmin

    자세한 내용은 Compute Engine 서비스 계정에 필요한 역할 부여를 참조하세요.

  2. gcloud compute images export 명령어를 사용하여 이미지를 내보냅니다.

    gcloud compute images export \
        --destination-uri DESTINATION_URI \
        --image IMAGE_NAME \
        --compute-service-account SERVICE_ACCOUNT_EMAIL

    다음을 바꿉니다.

    • DESTINATION_URI: 내보낸 이미지 파일의 Cloud Storage URI 대상입니다.
    • IMAGE_NAME: 내보낼 디스크 이미지의 이름입니다.
    • SERVICE_ACCOUNT_EMAIL: 이전 단계에서 만든 Compute Engine 서비스 계정과 연결된 이메일 주소입니다.

예시

예를 들어 다음 명령어는 image-export-service-account@proj-12345.iam.gserviceaccount.com 이메일이 포함된 서비스 계정을 통해 my-image라는 이미지를 my-project에서 my-bucket이라는 Cloud Storage 버킷으로 내보냅니다. 기본적으로 이미지는 disk.raw 파일로 내보내지고 tar.gz 파일 형식으로 압축됩니다.

gcloud compute images export \
    --destination-uri gs://my-bucket/my-image.tar.gz \
    --image my-image \
    --project my-project \
    --compute-service-account image-export-service-account@proj-12345.iam.gserviceaccount.com
    

플래그에 대해서는 gcloud compute images export 참조 문서를 확인하세요.

REST

  1. 서비스 계정을 만들고 최소 역할을 할당합니다. 서비스 계정 만들기에 대한 자세한 내용은 서비스 계정 만들기 및 관리를 참조하세요.

    지정된 Compute Engine 서비스 계정에는 최소한 다음 역할이 할당되어 있어야 합니다.

    • roles/compute.storageAdmin
    • roles/storage.objectAdmin

    자세한 내용은 Compute Engine 서비스 계정에 필요한 역할 부여를 참조하세요.

  2. API에서 Cloud Build API에 대한 POST 요청을 만듭니다.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
      "timeout": "7200s",
      "steps":[
        {
          "args":[
            "-timeout=7000s",
            "-source_image=SOURCE_IMAGE",
            "-client_id=api",
            "-format=IMAGE_FORMAT",
            "-destination_uri=DESTINATION_URI",
            "-compute_service_account=SERVICE_ACCOUNT_EMAIL"
          ],
          "name":"gcr.io/compute-image-tools/gce_vm_image_export:release",
          "env":[
            "BUILD_ID=$BUILD_ID"
          ]
        }
      ],
      "tags":[
        "gce-daisy",
        "gce-daisy-image-export"
      ]
    }
    

    다음을 바꿉니다.

    • PROJECT_ID: 내보낼 이미지가 포함된 프로젝트의 프로젝트 ID입니다.
    • SOURCE_IMAGE: 내보낼 이미지의 이름입니다.
    • IMAGE_FORMAT: 내보낸 이미지의 형식입니다. 유효한 형식에는 vmdk, vhdx, vpc, vdi, qcow2가 있습니다.
    • DESTINATION_URI: 이미지 파일을 내보낼 Cloud Storage URI 위치입니다. 예를 들면 gs://my-bucket/my-exported-image.vmdk입니다.
    • SERVICE_ACCOUNT_EMAIL: 이전 단계에서 만든 Compute Engine 서비스 계정과 연결된 이메일 주소입니다.

제공할 수 있는 추가 args 값은 VM 이미지 내보내기 GitHub 페이지의 선택적 플래그 섹션을 참조하세요.

공유 VPC를 사용하여 이미지 내보내기

공유 VPC를 사용하는 이미지를 내보내려면 먼저 compute.networkUser 역할을 Cloud Build 서비스 계정에 추가해야 합니다. 자세한 내용은 Cloud Build 서비스 계정에 필요한 역할 부여를 참조하세요.

Google Cloud CLI 또는 REST를 사용하여 이미지를 내보낼 수 있습니다.

gcloud

gcloud compute images export 명령어를 사용하여 이미지를 내보냅니다.

gcloud compute images export \
    --image IMAGE_NAME \
    --destination-uri DESTINATION_URI \
    --project PROJECT_ID \
    --network NETWORK \
    --subnet SUBNET \
    --zone ZONE

다음을 바꿉니다.

  • IMAGE_NAME: 내보낼 이미지의 이름입니다.
  • DESTINATION_URI: 이미지 파일을 내보낼 Cloud Storage URI 위치입니다.
  • PROJECT_ID: 이미지가 있는 프로젝트의 ID입니다.
  • NETWORK: 공유 VPC 네트워크의 전체 경로입니다. 예를 들면 projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME입니다.
  • SUBNET: 선택사항. 공유 VPC 서브네트워크의 전체 경로입니다. 예를 들면 projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME입니다.

    이 모드를 지정하는 방법은 VPC 네트워크 모드에 따라 다릅니다.

    • VPC 네트워크가 레거시 모드를 사용하는 경우 서브넷을 지정하지 마세요.
    • VPC 네트워크가 자동 모드를 사용하는 경우 서브넷을 지정하는 것은 선택사항입니다.
    • VPC 네트워크가 커스텀 모드를 사용하는 경우 이 필드를 지정해야 합니다.
  • ZONE: 선택사항. 내보내기에 사용할 영역입니다. 이 영역은 서브넷의 리전과 일치해야 합니다. 예를 들어 SUBNETus-west1 리전에 있는 경우 내보내기 영역은 us-west1-a, us-west1-b 또는 us-west1-c 중 하나여야 합니다.

    SUBNET를 지정한 경우 영역도 지정해야 합니다.

예를 들어 다음 명령어는 example-image라는 이미지를 my-project에서 my-bucket이라는 Cloud Storage 버킷으로 내보냅니다. 이 예시에서 Virtual Private Cloud 네트워크(my-shared-vp)는 커스텀 서브넷(my-custom-subnet)을 사용합니다. 기본적으로 이미지는 disk.raw 파일로 내보내지고 tar.gz 파일 형식으로 압축됩니다.

명령어 샘플

gcloud compute images export \
    --image example-image \
    --destination-uri gs://my-bucket/my-image.tar.gz \
    --project my-project \
    --network projects/my-vpc-project/global/networks/my-shared-vpc \
    --subnet projects/my-vpc-project/regions/us-west1/subnetworks/my-custom-subnet \
    --zone us-west1-c
 

REST

  1. Cloud Storage에 이미지를 추가합니다.

  2. API에서 Cloud Build API에 대한 POST 요청을 만듭니다.

    POST https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds
    {
      "timeout": "7200s",
      "steps":[
        {
          "args":[
            "-timeout=7000s",
            "-source_image=SOURCE_IMAGE",
            "-client_id=api",
            "-format=IMAGE_FORMAT",
            "-destination_uri=DESTINATION_URI",
            "-network=NETWORK",
            "-subnet=SUBNET",
            "-zone=ZONE"
          ],
          "name":"gcr.io/compute-image-tools/gce_vm_image_export:release",
          "env":[
            "BUILD_ID=$BUILD_ID"
          ]
        }
      ],
      "tags":[
        "gce-daisy",
        "gce-daisy-image-export"
      ]
    }
    

    다음을 바꿉니다.

    • PROJECT_ID: 내보낼 이미지가 포함된 프로젝트의 프로젝트 ID입니다.
    • SOURCE_IMAGE: 내보낼 이미지의 이름입니다.
    • IMAGE_FORMAT: 내보낸 이미지의 형식입니다. 유효한 형식에는 vmdk, vhdx, vpc, vdi, qcow2가 있습니다.
    • DESTINATION_URI: 이미지 파일을 내보낼 Cloud Storage URI 위치입니다. 예를 들면 gs://my-bucket/my-exported-image.vmdk입니다.
    • NETWORK: 공유 VPC 네트워크의 전체 경로입니다. 예를 들면 projects/HOST_PROJECT_ID/global/networks/VPC_NETWORK_NAME입니다.
    • SUBNET: 공유 VPC 서브네트워크의 전체 경로입니다. 예를 들면 projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME입니다.

      이 모드를 지정하는 방법은 VPC 네트워크 모드에 따라 다릅니다.

      • VPC 네트워크가 레거시 모드를 사용하는 경우 서브넷을 지정하지 마세요.
      • VPC 네트워크가 자동 모드를 사용하는 경우 서브넷을 지정하는 것은 선택사항입니다.
      • VPC 네트워크가 커스텀 모드를 사용하는 경우 이 필드를 지정해야 합니다.
    • ZONE: 내보내기에 사용할 영역입니다. 이 영역은 서브넷의 리전과 일치해야 합니다. 예를 들어 SUBNETus-west1 리전에 있는 경우 내보내기 영역은 us-west1-a, us-west1-b 또는 us-west1-c 중 하나여야 합니다.

      대부분의 경우 영역 지정은 선택사항입니다. SUBNET이 지정되었으면 영역을 지정해야 합니다.

    제공할 수 있는 추가 args 값은 VM 이미지 내보내기 GitHub 페이지의 선택적 플래그 섹션을 참조하세요.

수동으로 이미지 만들기 및 내보내기

gcloud compute images create 명령어와 gcloud compute images export 명령어가 요구사항을 충족하지 못하면 Compute Engine 인스턴스에서 수동으로 이미지를 만들고 내보낼 수 있습니다. 이 프로세스에는 먼저 이미지를 만든 후 내보내는 별도의 단계가 있습니다.

다음 예시에서는 생성된 디스크를 image-disk라고 부릅니다.

이미지를 만들고 내보내려면 다음 안내를 따르세요.

  1. 선택사항: 스냅샷을 만들기 전에 디스크가 연결된 인스턴스를 중지합니다. 인스턴스를 중지하면 스냅샷 내 디스크 내용의 무결성이 보장됩니다.

  2. 디스크의 스냅샷을 만듭니다. 스냅샷 이름을 image-snapshot으로 지정합니다.

    gcloud compute disks snapshot DISK_NAME \
        --snapshot-names image-snapshot

    DISK_NAME을 스냅샷을 만드는 데 사용할 디스크의 이름으로 바꿉니다. 디스크를 나열하여 디스크의 이름을 찾을 수 있습니다.

  3. 다음 명령어를 실행하여 image-snapshot 스냅샷으로 image-disk라는 새 디스크를 만듭니다.

    gcloud compute disks create image-disk \
        --source-snapshot image-snapshot
  4. tar 파일을 저장할 temporary-disk라는 임시 디스크를 만들고 디스크 SIZE를 이미지 디스크보다 최소 50% 이상 크게 지정합니다.

    나중에 디스크를 분리하고 삭제할 수 있습니다.

    gcloud compute disks create temporary-disk \
        --size SIZE

    여기서 SIZE는 임시 디스크의 크기(GB 또는 TB)입니다. 예를 들어 100GB를 지정하면 100GB 디스크가 생성됩니다.

  5. 인스턴스를 만들고 인스턴스에서 storage-rw 범위를 사용 설정합니다. 또한 image-disktemporary-disk를 특정 device-name 속성이 있는 보조 디스크로 인스턴스에 연결합니다. VM_NAME을 만들 인스턴스의 이름으로 바꿉니다.

    gcloud compute instances create VM_NAME \
        --scopes storage-rw \
        --disk name=image-disk,device-name=image-disk \
        --disk name=temporary-disk,device-name=temporary-disk

    이후 단계에서 Cloud Storage에 파일을 업로드할 수 있도록 서비스 계정 범위를 전달합니다.

    필요한 경우 새 인스턴스 시작의 세부정보를 확인합니다.

  6. 인스턴스에 연결 VM_NAME을 연결할 인스턴스의 이름으로 바꿉니다.

    gcloud compute ssh VM_NAME
  7. 임시 디스크를 포맷하고 마운트합니다. 디스크를 포맷하면 임시 디스크의 내용이 삭제됩니다.

    sudo mkdir /mnt/tmp
    sudo mkfs.ext4 -F /dev/disk/by-id/google-temporary-disk
    sudo mount -o discard,defaults /dev/disk/by-id/google-temporary-disk /mnt/tmp
  8. 선택사항: tar 파일을 만들기 전에 이미지 디스크를 마운트하고 추가 변경사항을 적용합니다. 예를 들어 기존 파일을 이미지에 포함하지 않으려면 /home 디렉터리에서 삭제하면 됩니다. 수정할 디스크 파티션을 마운트한 다음 변경해야 하는 디스크의 파일을 수정하고 작업이 끝나면 마운트를 해제하세요.

    1. 디스크나 파티션을 마운트할 수 있는 디렉터리를 만듭니다.

      sudo mkdir /mnt/image-disk
    2. ls 명령어를 사용하여 마운트해야 하는 디스크나 디스크 파티션을 결정합니다.

      ls /dev/disk/by-id/

      명령어는 디스크 ID와 파티션 목록을 출력합니다. 예를 들어 다음 디스크에는 파티션이 하나인 파티션 테이블이 있습니다. google-image-disk ID는 이미지를 만들려는 디스크 전체를 가리킵니다. google-image-disk-part1 ID는 이 디스크의 첫 번째 파티션을 가리킵니다. 디스크에 변경사항을 적용해야 하는 경우 파티션을 마운트한 후 전체 디스크에서 이미지를 만듭니다.

      google-image-disk
      google-image-disk-part1
      
    3. 디스크나 파티션을 마운트합니다. 디스크에 파티션 테이블이 있으면 개별 파티션을 디스크에 마운트합니다. 예를 들면 google-image-disk-part1을 마운트합니다.

      sudo mount /dev/disk/by-id/google-image-disk-part1 /mnt/image-disk

      또는 디스크가 파티션 테이블이 없는 원시 형식이라면 전체 google-image-disk 디스크를 마운트합니다.

      sudo mount /dev/disk/by-id/google-image-disk /mnt/image-disk
    4. /mnt/image-disk 디렉터리의 파일을 수정하여 디스크의 파일을 구성합니다. 예를 들어 SSH 키가 공유되지 않도록 /mnt/image-disk/home/[USER]/.ssh/authorized_keys 파일을 삭제할 수도 있습니다.

    5. 파일 수정이 완료되면 디스크를 마운트 해제합니다.

      sudo umount /mnt/image-disk/
  9. 이미지의 tar 파일을 만듭니다.

    이미지 디스크에서 파일의 맞춤설정이 끝나면 임시 디스크에서 원시 디스크 파일을 생성하세요. 원시 디스크 이미지의 이름은 'disk.raw'여야 합니다.

     sudo dd if=/dev/disk/by-id/google-image-disk of=/mnt/tmp/disk.raw bs=4096

    그런 다음 tar.gz 파일을 만듭니다.

    cd /mnt/tmp

    sudo tar czvf myimage.tar.gz disk.raw

    이 명령어는 다음 위치에서 인스턴스의 이미지를 만듭니다.

    /mnt/tmp/myimage.tar.gz

  10. Cloud Storage에 이미지를 업로드합니다.

    Cloud Storage에 tar 파일을 업로드하려면 인스턴스에 사전 설치된 Google Cloud CLI를 사용합니다.

    1. gcloud CLI를 사용하여 버킷을 만듭니다.

      버킷을 만들기 전에 버킷 및 객체 이름 지정 가이드라인을 검토하세요. 검토 후 다음 명령어를 사용하여 버킷을 만듭니다. BUCKET_NAME을 만들 버킷의 이름으로 바꿉니다.

      me@example-instance:~$ 
      gcloud storage buckets create gs://BUCKET_NAME
    2. 파일을 새 버킷에 복사합니다. BUCKET_NAME을 파일을 복사할 버킷의 이름으로 바꿉니다.

      me@example-instance:~$ 
      gcloud storage cp /mnt/tmp/myimage.tar.gz gs://BUCKET_NAME

파일을 Cloud Storage로 내보냈습니다. 이제 이미지를 다른 사람과 공유하거나 tar 파일을 사용하여 새 이미지를 Google Cloud 콘솔 프로젝트에 추가할 수 있습니다.

다음 단계