이미지 관리

저장소에 이미지 나열, 태그 추가, 태그 삭제, 새 저장소에 이미지 복사, 이미지 삭제 등이 대표적인 이미지 관리 작업입니다.

로컬 이미지를 Container Registry로 푸시하거나 Container Registry에 저장된 이미지를 가져오는 방법은 이미지 내보내기 및 가져오기를 참조하세요.

시작하기 전에

다음 사항을 확인하세요.

  1. 프로젝트에서 Container Registry를 사용 설정했는지 여부

  2. Docker를 설치했는지 여부

  3. Docker를 구성하여 레지스트리에 인증했는지 여부

  4. 레지스트리에 액세스할 수 있는 권한이 있는지 여부

스토리지 위치를 기준으로 이미지 나열

Google Cloud Console 또는 명령줄을 사용하여 특정 호스트 위치의 이미지를 나열할 수 있습니다.

Console

특정 호스트 위치의 이미지를 나열하려면 다음 안내를 따르세요.

  1. Container Registry 페이지로 이동

    Container Registry 페이지 열기

  2. 이름 위에 있는 선택기를 사용하여 호스트 위치를 선택합니다. 옵션에는 모든 위치와 프로젝트가 현재 사용 중인 호스트 이름이 표시되며, gcr.io, us.gcr.io, eu.gcr.io 또는 asia.gcr.io가 포함될 수 있습니다.

gcloud

호스트 위치 중 하나에 있는 이미지를 나열하려면 다음 명령어를 사용하세요.

gcloud container images list --repository=[HOSTNAME]/[PROJECT-ID]

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

  • [HOSTNAME]은 Console의 Location에 나열됩니다. 4가지 옵션인 gcr.io, us.gcr.io, eu.gcr.io 또는 asia.gcr.io 중 하나입니다.
  • [PROJECT-ID]는 Google Cloud 콘솔 프로젝트 ID입니다. 프로젝트 ID에 콜론(:)이 포함되어 있으면 도메인 범위 프로젝트를 참조하세요.

중첩된 레지스트리가 있다면 중첩된 이미지가 저장된 저장소 수준을 지정해 중첩된 이미지를 나열하세요.

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

여기서 [IMAGE]는 더 많은 이미지가 중첩되는 저장소를 말합니다.

gcloud container images list 문서도 참조하세요.

이미지 버전 나열

레지스트리에는 한 이미지의 다양한 버전이 포함될 수 있습니다. 이러한 버전은 동일한 이미지 이름을 가지며, 다이제스트와 태그로 식별됩니다.

콘솔

이미지의 다이제스트와 태그를 보려면 다음 단계를 따르세요.

  1. Container Registry 페이지로 이동

    Container Registry 페이지 열기

  2. 이미지 이름을 클릭하여 이미지의 버전을 확인합니다. 잘린 다이제스트는 이름에 나열되고 태그는 태그에 나열됩니다.

  3. 전체 다이제스트를 확인하려면 이미지의 버전을 클릭하여 메타데이터를 확인하세요. 다이제스트는 이미지 다이제스트라고 표시됩니다.

gcloud

이미지의 잘린 다이제스트와 태그를 나열하려면 다음 명령어를 실행하세요.

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

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

  • [HOSTNAME]은 Console의 Location에 나열됩니다. 4가지 옵션인 gcr.io, us.gcr.io, eu.gcr.io 또는 asia.gcr.io 중 하나입니다.
  • [PROJECT-ID]는 Google Cloud Console 프로젝트 ID입니다. 프로젝트 ID에 콜론(:)이 포함된 경우 도메인 범위 프로젝트를 참조하세요.
  • [IMAGE]는 Container Registry에 있는 이미지의 이름입니다.

특정 이미지 버전의 전체 다이제스트를 나열하려면 다음 명령어를 실행하세요.

gcloud container images list-tags --format='get(digest)' [HOSTNAME]/[PROJECT-ID]/[IMAGE]

gcloud container images list-tags 문서를 참조하세요.

이미지에 태그 지정

Google Cloud Console 또는 명령줄을 사용하여 이미지에 태그를 추가 할 수 있습니다.

digest는 이미지 버전의 자동으로 생성되는 고유한 식별자입니다. tag는 이미지의 특정 버전에 적용할 수 있는 라벨입니다.

이미지에 2개 이상의 태그를 추가할 수 있습니다. 저장소 내에서 이미지의 각 태그는 고유해야 합니다. 예를 들어 release-candidate 태그를 이미지의 9번째 버전에 추가한 경우 10번째 버전에 동일한 태그를 추가하면 태그가 9번째 버전에서 10번째 버전으로 이동됩니다.

이미지에 태그를 지정하지 않으면 Docker 클라이언트가 기본 latest 태그를 추가합니다. 즉, latest 태그는 이미지의 최신 버전을 나타내지 않습니다. 대신 latest 태그가 지정된 이미지 버전 또는 이미지의 태그가 지정되지 않은 최신 버전을 나타냅니다. latest의 의미가 불분명하므로 latest 태그에 의존하지 않는 것이 좋습니다.

Console

Container Registry가 호스팅하는 이미지를 태그하려면 다음 단계를 따르세요.

  1. Container Registry 페이지로 이동

    Container Registry 페이지 열기

  2. 이미지 이름을 클릭하여 이미지의 버전을 확인합니다.

  3. 태그에서 수정 아이콘을 클릭합니다.

  4. 입력란에 새 태그를 입력하고 저장을 클릭합니다.

gcloud

Container Registry에서 호스팅하는 이미지에 태그를 지정하려면 gcloud container images add-tag 명령어를 사용하세요.

gcloud container images add-tag \
[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG] \
[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[NEW_TAG]

또는

gcloud container images add-tag \
[HOSTNAME]/[PROJECT-ID]/[IMAGE]@[IMAGE_DIGEST] \
[HOSTNAME]/[PROJECT-ID]/[IMAGE]:[NEW_TAG]

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

  • [HOSTNAME]은 Console의 Location에 나열됩니다. 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 해시 값입니다.
  • [NEW_TAG]는 이미지에 추가할 새 태그입니다.

이 명령어에 대한 자세한 내용은 gcloud container images add-tag를 참조하세요.

Container Registry에 호스팅할 로컬 이미지에 태그 지정

새 이미지를 Container Registry로 내보내려면 먼저 레지스트리 이름으로 태그를 지정한 다음 이미지를 내보내야 합니다. 자세한 내용은 이미지를 레지스트리로 내보내기를 참조하세요.

이미지 태그 해제

Google Cloud Console 또는 명령줄을 사용하여 Container Registry의 이미지에서 태그를 삭제할 수 있습니다.

Console

  1. Container Registry 페이지로 이동

    Container Registry 페이지 열기

  2. 이미지 이름을 클릭하여 이미지의 버전을 확인합니다.

  3. 태그에서 수정 아이콘을 클릭합니다.

  4. 태그를 삭제하고 저장을 클릭합니다.

gcloud

이미지에서 태그를 제거하려면 다음 명령어를 사용하세요.

gcloud container images untag [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG]

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

  • [HOSTNAME]은 Console의 Location에 나열됩니다. 4가지 옵션인 gcr.io, us.gcr.io, eu.gcr.io 또는 asia.gcr.io 중 하나입니다.
  • [PROJECT-ID]는 Google Cloud Console 프로젝트 ID입니다. 프로젝트 ID에 콜론(:)이 포함된 경우 도메인 범위 프로젝트를 참조하세요.
  • [IMAGE]는 Container Registry에 있는 이미지의 이름입니다.
  • [TAG]는 삭제할 태그입니다.

    이 명령어에 대한 자세한 내용은 gcloud container images untag를 참조하세요.

새로운 레지스트리에 이미지 복사

명령줄을 이용해 특정 저장소의 이미지를 다른 저장소에 복사할 수 있습니다. 두 저장소 모두에 액세스할 수 있어야 합니다.

특정 저장소의 이미지를 다른 저장소에 복사하려면 gcloud container images add-tag 명령어를 사용한 다음 옮길 이미지를 해당 이미지의 태그나

gcloud container images add-tag \
[SOURCE_HOSTNAME]/[SOURCE_PROJECT-ID]/[SOURCE_IMAGE]:[SOURCE_TAG] \
[DESTINATION_HOSTNAME]/[DESTINATION_PROJECT-ID]/[DESTINATION_IMAGE]:[DESTINATION_TAG]

다이제스트로 식별하세요.

gcloud container images add-tag \
[SOURCE_HOSTNAME]/[SOURCE_PROJECT-ID]/[SOURCE_IMAGE]@[IMAGE_DIGEST] \
[DESTINATION_HOSTNAME]/[DESTINATION_PROJECT-ID]/[DESTINATION_IMAGE]:[DESTINATION_TAG]

여기서 원본과 대상 모두에 있어

  • [HOSTNAME]은 이미지가 호스팅되는 위치로, 4가지 옵션인 gcr.io, us.gcr.io, eu.gcr.io 또는 asia.gcr.io 중 하나입니다.
  • [PROJECT-ID]는 Google Cloud Console 프로젝트 ID입니다. 프로젝트 ID에 콜론(:)이 포함된 경우 도메인 범위 프로젝트를 참조하세요.
  • [IMAGE]는 Container Registry에 있는 이미지의 이름입니다.
  • [IMAGE_DIGEST]는 이미지 콘텐츠의 sha256 해시 값입니다.
  • [TAG]는 이동할 원본 이미지를 식별하는 태그 또는 대상 저장소에 있는 이미지에 적용할 태그입니다.

예를 들어 이미지 my-image를 다른 프로젝트의 저장소와 유럽 호스트에 복사하되 이미지 이름과 태그는 그대로 유지하려면 다음 명령어를 사용해야 합니다.

gcloud container images add-tag \
gcr.io/[PROJECT-ID]/my-image:tag1 \
eu.gcr.io/[OTHER-PROJECT-ID]/my-image:tag1

여기서 [PROJECT-ID][OTHER-PROJECT-ID]는 복사 원본 프로젝트와 복사 대상 프로젝트의 Google Cloud Console 프로젝트 ID입니다. 두 프로젝트에서 모두 저장소에 액세스할 수 있어야 합니다. 프로젝트 ID 중 하나에 콜론(:)이 포함된 경우 도메인 범위 프로젝트를 참조하세요.

이 명령어에 대한 자세한 내용은 gcloud container images add-tag를 참조하세요.

이미지 삭제

Google Cloud Console 또는 명령줄을 사용하여 이미지를 삭제할 수 있습니다. 이미지 삭제는 취소할 수 없습니다.

사용하지 않는 이미지를 관리하는 데 도움이 되는 다른 도구도 있습니다. 예를 들어 gcr-cleaner 도구는 다양한 기준에 따라 이전 이미지를 찾고 삭제합니다. 사용하지 않는 이미지를 삭제하면 스토리지 비용을 줄이는 데 도움이 됩니다. gcr-cleaner 도구는 공식 Google 제품이 아닙니다.

Google Cloud Console 또는 gcloud CLI에서 이미지를 삭제하려면 다음 안내를 따르세요.

Console

  1. Container Registry 페이지로 이동

    Container Registry 페이지 열기

  2. 이미지 이름을 클릭하여 이미지의 버전을 확인합니다.

  3. 레지스트리에서 삭제할 이미지의 버전 옆에 있는 상자를 선택합니다.

  4. 페이지 상단에서 삭제를 클릭합니다.

  5. 저장소 항목 삭제 팝업에서 삭제를 클릭합니다.

gcloud

다음 명령어 중 하나를 실행합니다.

  • 다이제스트로 식별하는 이미지:

    gcloud container images delete [HOSTNAME]/[PROJECT-ID]/[IMAGE]@[IMAGE_DIGEST]
    
  • 태그로 식별하고 여러 태그가 있는 이미지:

    gcloud container images delete [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG] --force-delete-tags
    

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

  • [HOSTNAME]은 Console의 Location에 나열됩니다. 4가지 옵션인 gcr.io, us.gcr.io, eu.gcr.io 또는 asia.gcr.io 중 하나입니다.
  • [PROJECT-ID]는 Google Cloud Console 프로젝트 ID입니다. 프로젝트 ID에 콜론(:)이 포함된 경우 도메인 범위 프로젝트를 참조하세요.
  • [IMAGE]는 Container Registry에 있는 이미지의 이름입니다.
  • [IMAGE_DIGEST]는 이미지 콘텐츠의 sha256 해시 값입니다.
  • [TAG]는 삭제할 이미지의 태그입니다.

이 명령어에 대한 자세한 내용은 gcloud container images delete를 참조하세요.

다음 단계