Amazon ECR 사용 시 Docker 명령 및 문제 해결 - Amazon ECR

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon ECR 사용 시 Docker 명령 및 문제 해결

경우에 따라 Amazon ECR에 대해 Docker 명령을 실행하면 오류 메시지가 표시될 수 있습니다. 몇 가지 일반적인 오류 메시지 및 잠재적인 해결 방안이 아래 설명되어 있습니다.

Docker 로그에는 예상 오류 메시지가 포함되지 않습니다.

Docker 관련 문제의 디버깅을 시작하려면 먼저 호스트 인스턴스에서 실행되는 Docker 데몬에서 Docker 디버깅 출력을 켜십시오. Amazon ECS 컨테이너 인스턴스에서 Amazon ECR에서 가져온 이미지를 사용하는 경우 Amazon Elastic 컨테이너 서비스 개발자 안내서의 Docker 데몬에서 자세한 출력 구성을 참조하십시오.

Amazon ECR 리포지토리로부터 이미지를 가져올 때 오류: "Filesystem Verification Failed" 또는 "404: Image Not Found"

Docker 1.9 이상을 사용하여 docker pull 명령을 사용하여 Amazon ECR 리포지토리에서 이미지를 가져올 때 Filesystem verification failed 오류가 발생할 수 있습니다. Docker 버전 1.9 이하를 사용할 경우에는 404: Image not found 오류가 표시될 수 있습니다.

몇 가지 가능한 원인 및 관련 설명이 아래 나와 있습니다.

로컬 디스크 가득 참

docker pull을 실행하고 있는 로컬 디스크가 가득 찬 경우, 로컬 파일에서 계산된 SHA-1 해시가 Amazon ECR에서 계산한 것과 다를 수 있습니다. 가져오려는 도커 이미지를 저장할 만한 여유 공간이 로컬 디스크에 충분히 남아 있는지 확인하십시오. 오래된 이미지를 삭제하여 새로운 이미지를 위한 공간을 마련할 수도 있습니다. docker images 명령을 사용하여 로컬에 다운로드한 모든 도커 이미지 목록을 크기와 함께 표시합니다.

네트워크 오류로 인해 클라이언트가 원격 리포지토리에 연결할 수 없음

Amazon ECR 리포지토리를 호출하려면 인터넷에 연결되어야 합니다. 네트워크 설정을 확인하고, 다른 도구 및 애플리케이션이 인터넷의 리소스에 액세스할 수 있는지 확인하십시오. 프라이빗 서브넷의 Amazon EC2 인스턴스에서 docker pull을 실행하는 경우 서브넷에 인터넷에 대한 라우팅이 있는지 확인하세요. Network Address Translation(NAT) 서버 또는 관리형 NAT 게이트웨이를 사용하십시오.

현재 Amazon ECR 리포지토리를 호출하려면 회사 방화벽을 통해 Amazon Simple Storage Service(Amazon S3)로의 네트워크 액세스가 필요합니다. 조직에서 서비스 엔드포인트를 허용하는 방화벽 소프트웨어나 NAT 디바이스를 사용하는 경우, 현재 리전의 Amazon S3 서비스 엔드포인트를 허용해야 합니다.

HTTP 프록시 뒤로 Docker를 사용하고 있는 경우, 적절한 프록시 설정을 사용하여 Docker를 구성할 수 있습니다. 자세한 내용은 Docker 설명서의 HTTP 프록시를 참조하십시오.

Amazon ECR에서 이미지를 가져올 때 오류: "Filesystem Layer Verification Failed" 발생

docker pull 명령을 사용하여 이미지를 가져올 때 image image-name not found 오류가 표시될 수 있습니다. Docker 로그를 살펴보면 다음과 같은 오류가 있을 수 있습니다.

filesystem layer verification failed for digest sha256:2b96f...

이 오류는 이미지의 하나 이상의 계층을 다운로드하지 못했음을 나타냅니다. 몇 가지 가능한 원인 및 관련 설명이 아래 나와 있습니다.

이전 버전의 Docker를 사용하고 있음

이 오류는 1.10 버전 이전의 Docker 버전을 사용하고 있을 때 적은 비율로 발생할 수 있습니다. Docker 클라이언트를 1.10 이상으로 업그레이드하십시오.

클라이언트에 네트워크 또는 디스크 오류 발생

앞의 Filesystem verification failed 메시지의 설명대로, 디스크가 가득 찼거나 네트워크 문제가 있는 경우 하나 이상의 계층이 다운로드되지 않을 수 있습니다. 위의 권장 사항을 따라 파일 시스템이 가득 차지 않았는지와 네트워크 내에서 Amazon S3에 대한 액세스를 활성화했는지 확인하십시오.

리포지토리에 푸시할 때 HTTP 403 오류 또는 "no basic auth credentials" 오류 발생

aws ecr get-login-password 명령을 사용하여 Docker에 대해 성공적으로 인증을 한 경우에도 docker push 또는 docker pull 명령을 실행하면 HTTP 403 (Forbidden) 오류 또는 no basic auth credentials 오류 메시지가 표시되는 경우가 있습니다. 다음은 이러한 문제의 알려진 원인 몇 가지입니다.

다른 리전에 대해 인증 받음

인증 요청은 특정 리전으로 묶여 있으며 그 외 리전에 사용할 수 없습니다. 예를 들어, 미국 서부(오레곤)로부터 권한 부여 토큰을 받은 경우, 미국 동부(버지니아 북부)의 리포지토리에 대해 인증 받는 데 사용할 수 없습니다. 이 문제를 해결하려면 리포지토리가 있는 리전과 동일한 리전에서 인증 토큰을 검색했는지 확인합니다. 자세한 정보는 Amazon ECR에서의 프라이빗 레지스트리 인증을 참조하세요.

권한이 없는 리포지토리로 푸시하도록 인증했습니다.

리포지토리로 푸시하는 데 필요한 권한이 없습니다. 자세한 정보는 Amazon ECR의 프라이빗 리포지토리 정책을 참조하세요.

토큰이 만료됨

GetAuthorizationToken 작업을 사용하여 받은 토큰의 기본 권한 부여 토큰 만료 기간은 12시간입니다.

wincred 자격 증명 관리자의 버그

Windows용 Docker의 일부 버전에서는 wincred라는 자격 증명 관리자를 사용하는데, 이는 aws ecr get-login-password에서 생성하는 Docker 로그인 명령을 올바르게 처리하지 않습니다(자세한 내용은 https://github.com/docker/docker/issues/22910 참조). 출력인 Docker 로그인 명령을 실행할 수 있지만, 이미지를 푸시하거나 가져오려고 시도하면 해당 명령이 실패합니다. 이 버그는 aws ecr get-login-password의 출력인 Docker 로그인 명령에서 레지스트리 인수의 https:// 스키마를 제거하면 해결할 수 있습니다. HTTPS 스키마가 없는 예제 Docker 로그인 명령은 아래와 같습니다.

docker login -u AWS -p <password> <aws_account_id>.dkr.ecr.<region>.amazonaws.com