Artifact Registry에 Docker 컨테이너 이미지 저장하기

Artifact Registry는 비공개 패키지 및 Docker 컨테이너 이미지를 관리하기 위한 단일 위치를 제공합니다.

이 빠른 시작에서는 다음 방법을 보여줍니다.

  • Artifact Registry에서 비공개 Docker 저장소 만들기
  • 인증 설정
  • 저장소로 이미지 내보내기
  • 저장소에서 이미지 가져오기

Google Cloud 콘솔에서 이 태스크에 대한 단계별 안내를 직접 수행하려면 둘러보기를 클릭합니다.

둘러보기


시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  4. Artifact Registry API 사용 설정

    API 사용 설정

  5. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  6. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  7. Artifact Registry API 사용 설정

    API 사용 설정

셸 선택

이 빠른 시작을 완료하려면 Cloud Shell 또는 로컬 셸을 사용하세요.

Cloud Shell
Cloud Shell은 Google Cloud에서 호스팅되는 리소스를 관리하는 데 사용되는 셸 환경입니다. Docker, Google Cloud의 기본 명령줄 인터페이스인 Google Cloud CLI가 사전에 설치되어 있습니다.
로컬 셸
로컬 셸을 사용하려는 경우 환경에 Docker 및 gcloud CLI를 설치해야 합니다.

Cloud Shell 시작

Cloud Shell을 시작하려면 다음 단계를 수행하세요.

  1. Google Cloud Console로 이동.

    Google Cloud console

  2. Cloud Shell 활성화 버튼  을 클릭합니다.

Console 하단의 프레임에서 Cloud Shell 세션이 열립니다. 이 셸을 사용하여 gcloud 명령어를 실행합니다.

로컬 셸 설정

gcloud CLI 및 Docker를 설치하려면 다음 단계를 수행하세요.

  1. gcloud CLI를 설치합니다. 기존 설치를 업데이트하려면 gcloud components update 명령어를 실행합니다.

  2. Docker가 아직 설치되어 있지 않으면 설치합니다.

  3. Docker에는 레지스트리와 상호작용하기 위한 액세스 권한이 필요합니다. Linux 또는 Windows에서 Docker 보안 그룹에 Docker 명령어를 실행하는 데 사용할 사용자를 추가합니다. Docker Desktop은 가상 머신에서 루트 사용자로 실행되므로 MacOS에서는 이 단계가 필요하지 않습니다.

    Linux

    Docker 보안 그룹을 docker라고 합니다. 사용자 이름을 추가하려면 다음 명령어를 실행합니다.

    sudo usermod -a -G docker ${USER}
    

    Windows

    Docker 보안 그룹을 docker-users라고 합니다. 관리자 명령어 프롬프트에서 사용자를 추가하려면 다음 명령어를 실행합니다.

    net localgroup docker-users DOMAIN\USERNAME /add
    

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

    • DOMAIN은 Windows 도메인입니다.
    • USERNAME은 사용자 이름입니다.
  4. 그룹 멤버십 변경사항을 적용하려면 로그아웃했다가 다시 로그인합니다. 가상 머신을 사용하는 경우 멤버십 변경사항을 적용하려면 가상 머신을 다시 시작해야 할 수 있습니다.

  5. Docker가 실행 중인지 확인하려면 다음 Docker 명령어를 실행하세요. 현재 시간과 날짜가 반환됩니다.

  6. docker run --rm busybox date
    

    --rm 플래그는 종료 시 컨테이너 인스턴스를 삭제합니다.

Docker 저장소 만들기

이 빠른 시작의 샘플 이미지를 저장할 Docker 저장소를 만듭니다.

콘솔

  1. Google Cloud 콘솔에서 저장소 페이지를 엽니다.

    저장소 페이지 열기

  2. 추가 저장소 만들기를 클릭합니다.

  3. quickstart-docker-repo를 저장소 이름으로 지정합니다.

  4. 형식은 Docker를 선택하고 모드는 표준을 선택합니다.

  5. 위치 유형에서 리전을 선택한 후 us-central1 위치를 선택합니다.

  6. 만들기를 클릭합니다.

저장소가 저장소 목록에 추가됩니다.

gcloud

  1. 다음 명령어를 실행하여 'docker 저장소'라고 기술된 us-central1 위치에 quickstart-docker-repo라는 이름의 새 Docker 저장소를 만듭니다.

    gcloud artifacts repositories create quickstart-docker-repo --repository-format=docker \
        --location=us-central1 --description="Docker repository" \
        --project=PROJECT
    

    여기서 PROJECT는 Google Cloud 프로젝트 ID입니다.

  2. 다음 명령어를 실행하여 저장소가 생성되었는지 확인합니다.

    gcloud artifacts repositories list \
        --project=PROJECT
    

Artifact Registry 명령어에 대한 자세한 내용을 보려면 gcloud artifacts 명령어를 실행하세요.

인증 구성

이미지를 푸시하거나 가져오려면 먼저 Docker가 Artifact Registry에 대한 요청을 인증하는 데 Google Cloud CLI를 사용하도록 구성해야 합니다.

us-central1 리전의 Docker 저장소에 인증을 설정하려면 다음 명령어를 실행합니다.

gcloud auth configure-docker us-central1-docker.pkg.dev

이 명령어는 Docker 구성을 업데이트합니다. 이제 Google Cloud 프로젝트의 Artifact Registry와 연결하여 이미지를 내보내고 가져올 수 있습니다.

다른 인증 방법에 대한 자세한 내용은 인증 방법을 참조하세요.

내보낼 이미지 가져오기

이 빠른 시작에서는 hello-app이라는 샘플 이미지를 푸시합니다.

다음 명령어를 실행하여 이미지의 버전 1.0을 가져옵니다.

   docker pull us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0

Artifact Registry의 이미지 경로에는 여러 부분이 포함됩니다. 이 샘플 이미지의 경우 다음과 같습니다.

  • us: 저장소의 위치입니다.
  • docker.pkg.dev는 Artifact Registry Docker 저장소에 저장된 컨테이너 이미지의 호스트 이름입니다.
  • google-samples는 저장소 ID입니다.
  • containers/gke/google-samples 아래의 이미지 경로입니다.

저장소에 이미지 추가

Docker 이미지를 Artifact Registry로 내보내려면 먼저 저장소 이름으로 태그를 지정해야 합니다.

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

Docker 이미지에 저장소 이름으로 태그를 지정하면 docker push 명령어가 이미지를 특정 위치로 내보내도록 구성됩니다. 이 빠른 시작에서 호스트 위치는 us-central1-docker.pkg.dev입니다.

다음 명령어를 실행하여 이미지를 quickstart-image:tag1로 태그합니다.

docker tag us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 \
us-central1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1

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

  • us-central1은 저장소 위치입니다.
  • docker.pkg.dev는 만든 Docker 저장소의 호스트 이름입니다.
  • PROJECT는 Google Cloud 프로젝트 ID입니다. 프로젝트 ID에 콜론(:)이 포함되어 있으면 도메인 범위 프로젝트를 참조하세요.
  • quickstart-docker-repo는 만든 저장소의 ID입니다.
  • quickstart-image는 저장소에서 사용할 이미지 이름입니다. 이미지 이름은 로컬 이미지 이름과 다를 수 있습니다. 이 빠른 시작에서는 저장소 ID quickstart-docker-repo에 이미지를 직접 저장합니다.
  • tag1은 Docker 이미지에 추가할 태그입니다. 태그를 지정하지 않으면 기본 태그인 latest가 적용됩니다.

이제 이미지를 만든 저장소에 내보낼 수 있습니다.

이미지를 Artifact Registry로 내보내기

인증을 구성하고 로컬 이미지에 태그를 지정한 후에는 생성한 저장소에 이미지를 내보낼 수 있습니다.

Docker 이미지를 내보내려면 다음 명령어를 실행하세요.

docker push us-central1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1

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

Artifact Registry에서 이미지 가져오기

Artifact Registry에서 로컬 머신으로 이미지를 가져오려면 다음 명령어를 실행하세요.

docker pull us-central1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1

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

다음과 비슷한 출력이 표시됩니다.

latest: Pulling from [PROJECT-ID]/quickstart-image:tag1
Digest: sha256:70c42...
Status: Image is up to date for us-central1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1

삭제

이 페이지에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 수행합니다.

저장소를 삭제하기 전에, 보관할 이미지를 다른 위치에서 사용할 수 있는지 확인합니다.

저장소를 삭제하려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 저장소 페이지를 엽니다.

    저장소 페이지 열기

  2. 저장소 목록에서 quickstart-docker-repo 저장소를 선택합니다.

  3. 삭제를 클릭합니다.

gcloud

quickstart-docker-repo 저장소를 삭제하려면 다음 명령어를 실행합니다.

gcloud artifacts repositories delete quickstart-docker-repo --location=us-central1

다음 단계