이미지 가져오기 및 내보내기

이 페이지에서는 Container Registry를 사용하여 수행하는 가장 일반적인 두 가지 태스크인 이미지 가져오기 및 이미지 내보내기의 방법을 설명합니다. 새 이미지를 Container Registry로 내보내려면 먼저 아래 설명처럼 레지스트리 이름으로 이미지에 태그를 지정해야 합니다.

Container Registry를 빠르게 시작하고 실행하는 방법은 빠른 시작을 참조하세요.

이미지 나열, 태그 지정, 삭제에 대한 자세한 내용은 이미지 관리를 참조하세요.

시작하기 전에

다음 사항을 확인하세요.

  1. gcloud 명령줄 도구가 포함된 최신 버전의 Cloud SDK를 설치했는지 여부

  2. 프로젝트에 결제를 사용 설정했는지 여부

  3. Docker를 설치했는지 여부 인증에 gcloud 사용자 인증 정보 도우미(권장)를 사용하려면 버전 18.03 이상이 필요합니다.

    Ubuntu나 Debian과 같은 Linux 기반 운영체제를 사용하는 경우 sudo를 사용하지 않고 Docker를 실행할 수 있도록 사용자 이름을 docker 그룹에 추가합니다.

    sudo usermod -a -G docker ${USER}

    그룹 멤버십 변경사항을 적용하려면 로그아웃했다가 다시 로그인합니다. 가상 머신을 사용할 경우 멤버십 변경사항을 적용하려면 가상 머신을 다시 시작해야 할 수 있습니다.

  4. 레지스트리에서 가져오고 내보낼 권한이 있는지 여부

  5. gcloud를 사용자 인증 정보 도우미로 사용하도록 Docker를 구성했거나 다른 인증 방법을 사용하는지 여부 gcloud를 사용자 인증 정보 도우미로 사용하려면 다음 명령어를 실행하세요.

    gcloud auth configure-docker
        
  6. Docker를 사용하려면 사용자 인증 정보 도우미가 PATH 시스템에 있어야 합니다. 선택한 인증 정보 도우미인 gcloud 또는 docker-credential-gcrPATH 시스템에 있는지 확인합니다.

이미지를 레지스트리로 내보내기

로컬 이미지를 Container Registry로 내보내려면 먼저 레지스트리 이름으로 이미지에 태그를 지정한 후 이미지를 내보내야 합니다.

레지스트리 이름으로 로컬 이미지에 태그 지정하기

  1. 레지스트리 이름을 결정합니다.

    1. 이미지를 저장할 위치를 지정하는 호스트 이름을 선택합니다.

      • gcr.io는 이미지를 미국의 데이터 센터에서 호스팅하지만 나중에 위치가 변경될 수 있습니다.
      • us.gcr.io는 이미지를 미국의 데이터 센터에서, gcr.io에서 호스팅하는 이미지와 별도의 스토리지 버킷에 호스팅합니다.
      • eu.gcr.io는 유럽 연합 내 이미지를 호스팅합니다.
      • asia.gcr.io는 이미지를 아시아의 데이터 센터에서 호스팅합니다.

      이 위치는 Cloud Storage 스토리지 버킷의 멀티 리전에 해당합니다. 이미지를 새로운 호스트 이름으로 레지스트리에 내보내면 Container Registry는 지정된 멀티 리전에 스토리지 버킷을 만듭니다. 이 버킷은 레지스트리의 기본 스토리지입니다. 프로젝트 내에서 호스트 이름이 동일한 모든 레지스트리는 스토리지 버킷 하나를 공유합니다.

      콘솔에서는 이미지 호스트 이름이 위치에 나열됩니다.

    2. 이미지 이름을 선택합니다. 이미지 이름은 로컬 머신의 이미지 이름과 다를 수도 있습니다.

    3. 호스트 이름, Google Cloud Console 프로젝트 ID, 이미지 이름을 결합합니다.

      [HOSTNAME]/[PROJECT-ID]/[IMAGE]
          

      프로젝트 ID에 콜론(:)이 포함되어 있으면 도메인 범위 프로젝트를 참조하세요.

  2. 다음 명령어를 사용하여 레지스트리 이름으로 로컬 이미지에 태그를 지정합니다.

    docker tag [SOURCE_IMAGE] [HOSTNAME]/[PROJECT-ID]/[IMAGE]
        

    여기서 [SOURCE_IMAGE]는 로컬 이미지 이름 또는 이미지 ID입니다.

    이 명령어는 레지스트리 이름으로 이미지 이름을 지정하고 latest 태그를 적용합니다. 다른 태그를 적용하려면 다음 명령어를 사용하세요.

    docker tag [SOURCE_IMAGE] [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
        

태그가 지정된 이미지를 Container Registry로 내보내기

Docker 사용자 인증 정보 도우미는 Container Registry로 직접 인증하도록 Docker를 구성하는 가장 간단한 방법입니다. 그런 다음 docker 명령어를 사용하여 이미지에 태그를 지정하고, 내보내고, 가져옵니다. 또는 클라이언트 라이브러리를 사용하여 컨테이너 이미지를 관리하거나, Docker API와 직접 상호작용할 수 있습니다.

다음 명령어를 이용해 태그가 지정된 이미지를 Container Registry로 내보냅니다.

docker push [HOSTNAME]/[PROJECT-ID]/[IMAGE]
    

이 명령어는 latest 태그가 있는 이미지를 내보냅니다. 다른 태그가 있는 이미지를 내보내려면 다음 명령어를 사용합니다.

docker push [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
    

이미지를 새로운 호스트 이름으로 레지스트리에 내보내면 Container Registry는 지정된 멀티 리전 위치에 스토리지 버킷을 만듭니다. 이미지를 내보낸 후에 다음 작업을 할 수 있습니다.

  • Cloud Console로 이동하여 레지스트리와 이미지를 봅니다.

  • gcloud container images list-tags를 실행하여 이미지의 태그와 자동 생성된 다이제스트를 봅니다.

    gcloud container images list-tags [HOSTNAME]/[PROJECT-ID]/[IMAGE]
        

    명령어 결과는 다음과 비슷합니다.

    DIGEST        TAGS        TIMESTAMP
        44bde...      test        2017-..-..
        

이미지를 레지스트리에서 가져오기

Container Registry에서 이미지를 가져오려면 다음 명령어를 사용하세요.

docker pull [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]
    

또는

docker pull [HOSTNAME]/[PROJECT-ID]/[IMAGE]@[IMAGE_DIGEST]
    

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

  • [HOSTNAME]은 Console의 위치에 나열됩니다. 4가지 옵션(gcr.io, us.gcr.io, eu.gcr.io 또는 asia.gcr.io) 중 하나입니다.
  • [PROJECT-ID]는 Google Cloud Console 프로젝트 ID입니다. 프로젝트 ID에 콜론(:)이 포함되어 있으면 도메인 범위 프로젝트를 참조하세요.
  • [IMAGE]는 Container Registry에 있는 이미지의 이름입니다.
  • [TAG]는 이미지에 적용된 태그입니다. 레지스트리에서 태그는 이미지별로 고유합니다.
  • [IMAGE_DIGEST]는 이미지 콘텐츠의 sha256 해시 값입니다. Console에서 특정 이미지를 클릭하면 이미지의 메타데이터를 확인할 수 있습니다. 다이제스트는 이미지 다이제스트로 나열됩니다.

특정 이미지에 대한 가져오기 명령어를 얻는 방법:

  1. 이미지 이름을 클릭해 특정 레지스트리로 이동합니다.

  2. 레지스트리에서 가져올 이미지의 버전 옆에 있는 체크박스를 선택합니다.

  3. 페이지 상단에서 가져오기 명령어 표시를 클릭합니다.

  4. 태그나 다이제스트를 사용하여 이미지를 식별하는 가져오기 명령어를 복사합니다.

다음 단계