컨테이너 이미지 문제 해결

Artifact Registry에서 컨테이너 이미지를 관리할 때 문제가 발생할 경우 도움이 될 수 있는 문제 해결 단계에 대해 알아보세요.

이미지를 가져오거나 Google Cloud 런타임 환경에 배포할 수 없음

다음을 확인하세요.

  1. 내보내는 이미지의 전체 경로가 올바른지 확인합니다. 경로에는 레지스트리 호스트 이름, Google Cloud 프로젝트 ID, 저장소, 이미지가 포함되어야 합니다. 예를 들면 다음과 같습니다.

    us-east1-docker.pkg.dev/my-project/my-repo/my-image:v1
    

    자세한 내용은 저장소 및 이미지 이름을 참조하세요.

  2. 이미지를 가져오는 계정에 저장소에서 읽을 수 있는 권한이 있는지 확인합니다.

    • Cloud Build 기본 서비스 계정에는 동일한 Google Cloud 프로젝트의 저장소에 대한 읽기 및 쓰기 권한이 있습니다. 사용자 제공 서비스 계정을 사용하거나 프로젝트 간에 이미지를 내보내고 가져오는 경우 빌드를 실행하는 서비스 계정에 Artifact Registry 작성자 역할을 부여합니다.
    • 기본적으로 Compute Engine, Cloud Run, Google Kubernetes Engine에는 동일한 프로젝트의 저장소에 대한 읽기 권한이 있습니다. Artifact Registry가 런타임 환경과 다른 프로젝트에 있는 경우 Artifact Registry 리더 역할을 런타임 서비스 계정에 부여해야 합니다.
    • Docker 또는 다른 타사 도구를 사용하는 경우 다음을 수행해야 합니다.

Artifact Registry로 이미지를 푸시할 수 없음

다음을 확인하세요.

  1. 저장소가 있는지 확인합니다. Container Registry와 달리 저장소 생성은 첫 번째 이미지를 내보내는 것과 별도의 작업입니다. 저장소가 없으면 만듭니다.

  2. 내보내는 이미지의 전체 경로가 올바른지 확인합니다. 경로에는 레지스트리 호스트 이름, Google Cloud 프로젝트 ID, 저장소, 이미지가 포함되어야 합니다. 예를 들면 다음과 같습니다.

    us-east1-docker.pkg.dev/my-project/my-repo/my-image:v1
    

    각 Artifact Registry 저장소는 별도의 리소스이므로 저장소가 없는 경로로 이미지를 내보낼 수 없습니다. 예를 들어 us-east1-docker.pkg.dev/my-project/my-image:v1은 잘못된 이미지 경로입니다.

    자세한 내용은 저장소 및 이미지 이름을 참조하세요.

  3. 이미지를 내보내는 계정에 저장소에 쓸 수 있는 권한이 있는지 확인합니다.

    • Cloud Build 기본 서비스 계정에는 동일한 Google Cloud 프로젝트의 저장소에 대한 읽기 및 쓰기 권한이 있습니다. 사용자 제공 서비스 계정을 사용하거나 프로젝트 간에 이미지를 내보내고 가져오는 경우 빌드를 실행하는 서비스 계정에 Artifact Registry 작성자 역할을 부여합니다.
    • 기본적으로 Compute Engine, Cloud Run, Google Kubernetes Engine에는 동일한 프로젝트의 저장소에 대한 읽기 권한이 있습니다. 이러한 환경에서 타사 도구를 사용하여 이미지를 내보내는 경우 런타임 서비스 계정에 Artifact Registry 작성자 역할을 부여해야 합니다.
  4. Artifact Registry에서 The repository has enabled tag immutability 메시지를 반환하면 저장소에 태그 불변성이 구성된 것입니다. 저장소에 있는 동일한 이미지의 다른 버전에 이미 사용된 태그가 있는 이미지를 푸시할 수 없습니다. 이미지의 다른 저장된 버전에서 사용하지 않는 태그로 이미지를 다시 푸시해 보세요.

    저장소가 변경할 수 없는 이미지 태그에 대해 구성되었는지 확인하려면 Google Cloud 콘솔의 저장소 목록에서 변경할 수 없는 이미지 태그 열을 확인하거나 다음 명령어를 실행합니다.

    gcloud artifacts repositories describe REPOSITORY
        --project=PROJECT-ID
        --location=LOCATION
    

ImagePullBackOff 및 ErrImagePull 메시지

ImagePullBackOffErrImagePull이 포함된 메시지는 GKE로 이미지를 레지스트리에서 가져올 수 없음을 나타냅니다.