Code Engine 가 이미지를 가져올 수 없는 이유는 무엇입니까?
Code Engine 앱을 배포하거나 작업을 실행할 때, ‘ Unable to pull the image ’가 포함된 오류 메시지가 표시됩니다.
이 문제점을 해결하려면 이미지가 존재하고 이미지에 대한 액세스 권한이 있는지 확인하십시오. 다음 조건이 충족되는지 확인하십시오.
-
앱이나 작업에 대한 이미지가 존재하는지 확인하려면, 오류 메시지에서 실패 원인에 대한 정보를 확인하십시오.
-
Code Engine 에서 애플리케이션을 배포하거나 작업을 실행하려면, 먼저 런타임 라이브러리 등 애플리케이션 실행에 필요한 모든 런타임 아티팩트가 포함된 컨테이너 이미지를 생성해야 합니다. 컨테이너 이미지를 생성하는 데는 다양한 방법을 사용할 수 있으며, 여기에는 Code Engine 에서 제공하는 ‘컨테이너 이미지 빌드’ 기능을 사용하여 소스 코드로부터 앱을 빌드하는 방법도 포함됩니다. 이미지는 공용 또는 개인용 이미지 레지스트리에서 다운로드할 수 있습니다. 개인용 레지스트리 액세스에 대한 자세한 정보는 개인용 컨테이너 레지스트리에 대한 액세스 권한 추가를 참조하십시오.
-
Code Engine CLI에서
ibmcloud ce app create,ibmcloud ce job create또는ibmcloud ce jobrun submit명령을 사용하는 경우,REGISTRY/NAMESPACE/REPOSITORY:TAG형식을 사용하여 애플리케이션 또는 작업에 사용되는 이미지의 이름을 지정하십시오. 여기서REGISTRY및TAG는 선택사항입니다.REGISTRY가 지정되지 않은 경우 기본값은docker.io.입니다.TAG가 지정되지 않은 경우 기본값은latest입니다. 이미지 레지스트리를 지정하는 데 사용할 형식에 대한 자세한 정보는 다음 명령을 검토하십시오.
문제를 해결하기 위해 다음 해결 방법을 시도해 보세요.
-
권한이 없습니다. 참조된 이미지에 액세스할 권한이 없는 경우, 애플리케이션 생성 작업이 완료되지 않고 오류가 발생합니다. 다음이 포함된 오류 메시지가 표시됩니다.
Unable to pull-
참조된 이미지에 액세스할 수 있는지 확인하려면 이미지의 위치를 확인하고 이미지에 액세스할 수 있는 권한이 있는지 확인하십시오.
-
이미지가 컨테이너 이미지 레지스트리 (예: Docker Hub 또는 IBM Cloud® Container Registry) 에 있는 경우 Code Engine 에 레지스트리 액세스를 추가했으며 올바른 레지스트리 시크릿을 사용 중인지 확인하십시오. 컨테이너 이미지 레지스트리의 이미지 작업에 대한 자세한 정보는 개인용 컨테이너 레지스트리에 대한 액세스 권한 추가를 참조하십시오.
-
-
컨테이너 레지스트리 할당량이 초과되었습니다.
ibmcloud ce jobrun events --jobrun JOBRUN_NAME명령을 실행하여ImagePullBackOff오류를 확인하십시오. 예를 들면 다음과 같습니다.
ibmcloud ce jobrun events --jobrun myjobrun- 시스템 이벤트에 표시된 오류가 다음 메시지와 유사한 경우, 이 오류는 레지스트리 할당량 한도를 초과했음을 나타냅니다. 플랜을 업그레이드해 보십시오. IBM Cloud® Container Registry 서비스 플랜 및 할당량 한계에 대한 정보는 IBM Cloud Container Registry 를 참조하십시오.
403 Forbidden - Server message: denied: You have exceeded your pull traffic quota for the current month. Review your pull traffic quota and pricing plan. -
컨테이너 레지스트리에 인증이 필요합니다.
- 시스템 이벤트에 표시된 오류가 다음 메시지와 유사한 경우, 이 오류는 레지스트리에 대한 액세스 권한이 없거나 권한 부여가 필요할 수 있음을 나타냅니다. 사용자 계정에 레지스트리에 대한 적절한 접근 권한이 있는지 확인하십시오.
Failed to pull image "<image_name>": rpc error: code = Unknown desc = failed to pull and unpack image "<image_name:image_tag>": failed to resolve reference <image_name:image_tag>": pull access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed. -
Code Engine 가 컨테이너 레지스트리에서 이미지를 찾을 수 없습니다.
이 시나리오에서는 이미지가 존재하고 레지스트리 액세스가 작동하지만 Code Engine 가 특정 애플리케이션 개정에 대해 예상했던 이미지와 다른 이미지를 찾습니다. 컨테이너 레지스트리 이미지 요약이 애플리케이션 개정에 대한 이미지의 예상 요약과 일치하지 않습니다.
애플리케이션이나 새로운 앱 개정판을 배포할 때, 해당 컨테이너 이미지에 태그가 지정되어 있지 않은 한, 참조된 컨테이너 이미지의 최신 버전이 다운로드되어 배포됩니다. 이미지에 대해 태그를 지정한 경우 태그 지정된 이미지가 배치에 사용됩니다.
애플리케이션에서 참조한 원래 이미지와 동일한 태그를 사용하여 이미지의 새 버전을 작성하는 경우, 컨테이너 레지스트리에서 원래 이미지를 겹쳐씁니다. 그러나 새 이미지의 요약이 애플리케이션 개정의 요약과 다르므로 Code Engine 에서 이 새 이미지를 찾을 수 없습니다. 특정 애플리케이션 개정과 연관된 이미지에는 고유한 컨테이너 레지스트리 요약이 있으며 Code Engine 는 애플리케이션 개정의 수명 동안 이 요약을 사용합니다.
원래 이미지와 동일한 태그를 사용하여 이미지의 새 버전을 작성하는 경우 컨테이너 레지스트리에서 원래 이미지를 겹쳐쓰고 태그가 지정되지 않습니다. 새 이미지에 태그가 지정되고 이 새 이미지에는 다른 요약이 있습니다. Code Engine 애플리케이션은 새 이미지에 애플리케이션 개정에서 참조하는 이미지의 요약과 다른 요약이 있으므로 이 새 이미지를 사용하지 않습니다. Code Engine 는 원래 참조된 이미지가 여전히 존재하는 경우 애플리케이션 개정의 새 인스턴스를 계속 작성할 수 있습니다. 애플리케이션에 의해 원래 참조된 이미지가 없는 경우, Code Engine 는 예상된 이미지 요약을 찾지 못하며 애플리케이션은 이미지를 가져올 수 없기 때문에 실패합니다. 이미지를 정리하고 삭제할 때와 컨테이너 레지스트리에 대한 보존 정책을 구성할 때 주의하십시오. 태그 지정된 이미지를 겹쳐쓰는 것은 문제가 되지 않습니다. 그러나 태그 지정되지 않은 이미지를 삭제하는 사용 가능한 보존 정책으로 이미지를 겹쳐쓰거나 태그 지정되지 않은 이미지의 정리를 수동으로 트리거하는 경우 문제가 발생할 수 있습니다.
시스템 이벤트의 오류가 다음 메시지와 유사한 경우 이 오류는 Code Engine 가 레지스트리 네임스페이스에서 이미지를 가져올 수 없음을 표시합니다. 이미지의 태그가 올바른 이미지 요약을 가리키는지 확인하십시오.
Unable to pull the image. Image "<image_name>" does not exist in the registry namespace. Check your registry repository and tag. If the image exists in the repository, check whether the specified tag points to the correct image digest.애플리케이션에서 동일한 태그로 푸시된 새 이미지를 사용하려면 애플리케이션을 업데이트 하여 태그가 지정된 새 이미지를 참조하는 새 애플리케이션 개정을 작성해야 합니다.
-
Code Engine 컨테이너 레지스트리에 인증할 수 없습니다.
이 시나리오에서는 이미지가 존재하고 레지스트리 액세스가 작동하며 구성된 레지스트리 비밀 번호가 유효하지만 Code Engine 이 컨테이너 레지스트리에 인증할 수 없습니다. 아래와 유사한 오류 메시지가 표시될 수 있습니다:
ErrImagePull : failed to pull and unpack image "<image name>": failed to resolve reference "<image name>": failed to authorize: failed to fetch oauth token: unexpected status from GET request to...계정에
Restrict IP address access을 사용 설정했는지 확인하세요( 특정 IP 주소 허용하기 참조). 활성화하면 허용된 IP 주소만 계정에 대해 IBM Cloud® 로 인증할 수 있습니다. 이렇게 하면 Code Engine 이 컨테이너 레지스트리에 인증하지 못하므로 이미지를 가져올 수 없게 됩니다. Code Engine 프로젝트의public및privateIP 주소를 추가해야 합니다. 이러한 IP 주소를 식별하는 방법은 Code Engine 공용 및 개인 IP 주소를 참조하세요.
다음 단계
이미지 문제점 해결에 대해 자세히 학습하려면 이미지 디버깅 을 참조하십시오.
이미지에 대한 고려사항으로 앱, 작업 및 빌드의 문제점 해결에 대한 자세한 정보는 다음 주제를 참조하십시오.