LoginSignup
6
2

More than 3 years have passed since last update.

ECR Public をDockerHubの代わりに使ってみた(DockerHubのDownload Rate Limit対策)

Last updated at Posted at 2020-12-15

あらまし

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にアクセスすると、主要な公式イメージは登録されてる模様です。(全て確認したわけではないです)

image.png

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環境を使っている場合は、特に制限も無いので特に有用だと思われます。

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2