Amazon ECS에서 CannotPullContainer 작업 오류 - Amazon Elastic Container Service

Amazon ECS에서 CannotPullContainer 작업 오류

다음 오류는 Amazon ECS가 지정된 컨테이너 이미지를 검색할 수 없어 작업을 시작하지 못했음을 나타냅니다.

참고

1.4 Fargate 플랫폼 버전은 긴 오류 메시지를 자릅니다.

The task can’t pull the image. Check that the role has the permissions to pull images from the registry.

이 오류는 권한 문제 때문에 작업이 작업 정의에 지정된 이미지를 가져올 수 없음을 나타냅니다.

이 문제를 해결하려면:

  1. irepository에 이미지가 있는지 확인합니다. 이미지 보기에 대한 자세한 내용은 Amazon Elastic Container Registry 사용 설명서의 Viewing image details in Amazon ECR을 참조하세요.

  2. role-arn에 이미지를 가져올 수 있는 올바른 권한이 있는지 확인합니다.

    역할을 보고 수정하는 방법에 대한 자세한 내용은 AWS Identity and Access Management 사용 설명서의 역할 변경을 참조하세요.

    작업은 다음 역할 중 하나를 사용합니다.

The task cannot pull ‘image-name’ from the Amazon ECR repository ‘repository URI’. There is a connection issue between the task and Amazon ECR. Check your task network configuration.

이 오류는 작업을 Amazon ECR에 연결할 수 없음을 나타냅니다. repository URI 리포지토리에 대한 연결을 확인하세요.

이 문제를 확인하고 해결하는 방법에 대한 자세한 내용은 Amazon ECS 중지된 작업 오류 연결 확인 섹션을 참조하세요.

The task can’t pull the image. Check your network configuration

이 오류는 작업을 Amazon ECR에 연결할 수 없음을 나타냅니다.

이 문제를 확인하고 해결하는 방법에 대한 자세한 내용은 Amazon ECS 중지된 작업 오류 연결 확인 섹션을 참조하세요.

API error (500): Get https://111122223333.dkr.ecr.us-east-1.amazonaws.com/v2/: net/http: request canceled while waiting for connection

이 오류는 인터넷 경로가 존재하지 않아 연결 제한 시간이 초과되었음을 나타냅니다.

다음과 같은 방법으로 이 문제를 해결할 수 있습니다.

  • 퍼블릭 서브넷에 있는 작업의 경우 태스크를 시작할 때 퍼블릭 IP 자동 할당(Auto-assign public IP)활성화됨(ENABLED)으로 지정합니다. 자세한 내용은 애플리케이션을 Amazon ECS 태스크로 실행 단원을 참조하십시오.

  • 프라이빗 서브넷에 있는 작업의 경우 태스크를 시작할 때 퍼블릭 IP 자동 할당(Auto-assign public IP)비활성화됨(DISABLED)으로 지정하고 요청을 인터넷으로 라우팅하도록 VPC에 NAT 게이트웨이를 구성합니다. 자세한 내용은 Amazon VPC 사용 설명서NAT 게이트웨이 섹션을 참조하세요.

API 오류

이 오류는 Amazon ECR 엔드포인트에 연결 문제가 있음을 나타냅니다.

이 문제를 해결하는 방법에 대한 자세한 내용은 AWS Support 웹 사이트의 Amazon ECS에서 Amazon ECR 오류 'CannotPullContainerError: API error'를 해결하려면 어떻게 해야 하나요?를 참조하세요.

write /var/lib/docker/tmp/GetImageBlob111111111: no space left on device

이 오류는 디스크 공간이 부족함을 나타냅니다.

이 문제를 해결하려면 디스크 공간을 늘리세요.

Amazon ECS 최적화 AMI를 사용하는 경우, 다음 명령을 사용하여 파일 시스템에서 가장 큰 파일 20개를 검색할 수 있습니다.

du -Sh / | sort -rh | head -20

출력 예제:

5.7G    /var/lib/docker/containers/50501b5f4cbf90b406e0ca60bf4e6d4ec8f773a6c1d2b451ed8e0195418ad0d2
1.2G    /var/log/ecs
594M    /var/lib/docker/devicemapper/mnt/c8e3010e36ce4c089bf286a623699f5233097ca126ebd5a700af023a5127633d/rootfs/data/logs
...

일부 경우에 실행 중인 컨테이너로 루트 볼륨을 채울 수 있습니다. 컨테이너에서 기본 json-file 로그 드라이브를 max-size 제한 없이 사용하는 경우, 로그 파일이 공간의 대부분을 사용하는 것일 수 있습니다. docker ps 명령으로 위 출력의 디렉토리 이름을 컨테이너 ID로 매핑하여 공간을 사용하는 컨테이너를 확인할 수 있습니다. 예:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 50501b5f4cbf amazon/amazon-ecs-agent:latest "/agent" 4 days ago Up 4 days ecs-agent

기본적으로 json-file 로그 드라이버를 사용할 때 Docker는 전체 컨테이너의 표준 출력(및 표준 오류)를 캡처하고 이것을 JSON 형식으로 파일에 작성합니다. 로그 파일이 공간을 너무 많이 차지하는 것을 방지하는 로그 드라이버 옵션으로 max-size를 설정할 수 있습니다. 자세한 내용은 Docker 설명서의 로깅 드라이버 구성 섹션을 참조하세요.

다음은 이 옵션을 사용하는 방법을 보여주는 컨테이너 정의 조각입니다.

{ "log-driver": "json-file", "log-opts": { "max-size": "256m" } }

또는 컨테이너 로그가 디스크 공간을 너무 많이 차지할 경우 awslogs 로그 드라이버를 사용하는 방법도 있습니다. awslogs 로그 드라이버는 CloudWatch로 로그를 전송하기 때문에 컨테이너 인스턴스에서 컨테이너 로그용으로 사용되는 만큼의 디스크 공간이 생깁니다. 자세한 내용은 Amazon ECS 로그를 CloudWatch로 전송 단원을 참조하십시오.

ERROR: toomanyrequests: Too Many Requests or You have reached your pull rate limit.

이 오류는 Docker Hub 속도 제한이 있음을 나타냅니다.

다음 오류 중 하나가 발생하는 경우 Docker Hub 속도 제한에 도달했을 가능성이 있습니다.

Docker Hub 속도 제한에 대한 자세한 내용은 Docker Hub 속도 제한 이해 섹션을 참조하세요.

Docker Hub 속도 제한을 늘리고 컨테이너 인스턴스에 대한 Docker 가져오기를 인증해야 하는 경우 Private registry authentication for container instances를 참조하세요.

Error response from daemon: Get url: net/http: request canceled while waiting for connection

이 오류는 인터넷 경로가 존재하지 않아 연결 제한 시간이 초과되었음을 나타냅니다.

다음과 같은 방법으로 이 문제를 해결할 수 있습니다.

  • 퍼블릭 서브넷에 있는 작업의 경우 태스크를 시작할 때 퍼블릭 IP 자동 할당(Auto-assign public IP)활성화됨(ENABLED)으로 지정합니다. 자세한 내용은 애플리케이션을 Amazon ECS 태스크로 실행 단원을 참조하십시오.

  • 프라이빗 서브넷에 있는 작업의 경우 태스크를 시작할 때 퍼블릭 IP 자동 할당(Auto-assign public IP)비활성화됨(DISABLED)으로 지정하고 요청을 인터넷으로 라우팅하도록 VPC에 NAT 게이트웨이를 구성합니다. 자세한 내용은 Amazon VPC 사용 설명서NAT 게이트웨이 섹션을 참조하세요.

ref pull has been retried 1 time(s): failed to copy: httpReaderSeeker: failed open: unexpected status code

이 오류는 이미지를 복사할 때 실패했음을 나타냅니다.

이 문제를 해결하려면 다음 문서 중 하나를 검토합니다.

pull access denied

이 오류는 이미지에 대한 액세스 권한이 없음을 나타냅니다.

이 문제를 해결하려면 Amazon ECR을 사용하여 Docker 클라이언트를 인증해야 할 수 있습니다. 자세한 내용은 Amazon ECR 사용 설명서의 프라이빗 레지스트리 인증을 참조하세요.

pull command failed: panic: runtime error: invalid memory address or nil pointer dereference

이 오류는 잘못된 메모리 주소 또는 nil 포인터 역참조로 인해 이미지에 액세스할 수 없음을 나타냅니다.

이 문제를 해결하려면:

  • Amazon S3에 접속하기 위한 보안 그룹 규칙이 있는지 확인합니다.

  • 게이트웨이 엔드포인트를 사용하는 경우, 엔드포인트에 액세스하려면 라우팅 테이블에 경로를 추가해야 합니다.

error pulling image conf/error pulling image configuration

이 오류는 속도 제한에 도달했거나 네트워크 오류가 있음을 나타냅니다.

이 문제를 해결하려면 How can I resolve the "CannotPullContainerError" error in my Amazon ECS EC2 Launch Type Task를 참조하세요.

컨텍스트 취소됨

이 오류는 컨텍스트가 취소되었음을 나타냅니다.

이 오류의 일반적인 원인은 작업에서 사용 중인 VPC에 Amazon ECR에서 컨테이너 이미지를 가져오기 위한 경로가 없기 때문입니다.