ECR Public을 DockerHub 대신 사용해 보았습니다 (DockerHub의 Download Rate Limit 대책)

보이는



CodeBuild에서 Docker를 빌드하는 동안 DockerHub에 걸렸습니다. AWS의 새로운 서비스 ECR Public을 사용하여 쉽게 피할 수 있었습니다.

사건



CodeBuild에서 ubuntu 를 base 이미지로 Docker 컨테이너를 빌드하려고 했는데 다음 오류가 발생했습니다.
error pulling image configuration: toomanyrequests: Too Many Requests. Please see https://docs.docker.com/docker-hub/download-rate-limit/

조사



DockerHub가 최근 다운로드 수에 제한을 걸게 되었다. 다운로드수는 글로벌 IP/계정(로그인하면)마다 제한이 걸린다는 것.
클래스 메소드 씨의 기사가 상세하다.
“Too Many Requests.”로 빌드가 실패한다… AWS CodeBuild에서 IP 가챠를 피하기 위해 Docker Hub 로그인하세요! 라는 이야기

대응



(DockerHub의 인증이 어려운,,,, 라고 생각했던 곳) 그냥 AWS가 DockerHub의 대체가 되는 서비스 ECR Public 를 제공하기 시작했으므로, 이쪽을 이용하기로 했습니다.

[속보] AWS, Docker Hub의 대체를 노리는 「Amazon Elastic Container Registry Public」제공 개시. AWS re:Invent 2020
AWS가 Docker Hub의 대체 서비스를 발표 예고. 퍼블릭에 컨테이너 이미지를 공개 가능하고 50GB까지 무료, AWS에서라면 몇 번이라도 당겨 무제한

DockerHub에 인증을 넣는 패턴과 비교하여,
  • 간단
  • 무료 테두리의 폭이 크다
  • AWS 서비스에서 사용하는 경우 RateLimit 신경 쓰지 않아도 됩니다

  • 라는 장점이 있다고 판단했습니다.

    ECR Public 를 방문하면 주요 공식 이미지가 등록된 모양입니다. (모두 확인한 것은 아닙니다)



    ImageURI가 있기 때문에 (tag의 구성은 DockerHub와 동일), DockerFile from을 다시 작성하면됩니다.
    FROM public.ecr.aws/ubuntu/ubuntu:bionic
    

    아무래도 DockerHub와 정확히 같은 것이 hosting되어있는 것 같아 (같은 hash였고, Docker의 cache도 효과적이었습니다), 단순히 재기록하는 것만으로도 많이 움직였습니다.

    nginx의 Docker 용 리포지토리를 보면 자동으로 ECRPublic에 push하는 스크립트이있었습니다.

    요약



    조금 사용해 보았을 뿐입니다만, 공식 이미지의 취득원으로서 DockerHub의 대체로서 ECR Public은 사용할 수 있을 것 같습니다.
    특히 AWS 환경을 사용하는 경우에는 특별한 제한이 없으므로 특히 유용하다고 생각됩니다.

    좋은 웹페이지 즐겨찾기