常時mirror.gcr.ioからプルするようDockerfileを変更して、Docker Hubのレートリミットを速攻回避する
- Docker Hubは2025年4月からイメージのPullにキツめのレート制限をかけるようになる
- ありがたいことにGoogleがmirror.gcr.ioに(いまのところは)誰でも使えるミラーを設置してくれている
- FROMなどで指定されるイメージに"mirror.gcr.io/library/"をつけてやると、常時mirror.gcr.ioからpullするようにできる
2025年4月から、Docker Hubは 「同一IPから認証なしでのPull」を1時間あたり10回に制限する そうです。今日は2025年3月24日。目の前に現実が迫っています。
というわけで、ここでは手っ取り早く解決する方法だけをまとめます。 細かいことは一切抜きです。
真っ当な解決方法
おそらく、一般的な対応は以下のようになるでしょう。
-
Docker Hubのアカウント取ってログイン
- ログインすれば、アカウント単位で1時間あたり100回まで増える
- 普通の利用であればこれで十分なはず
-
適当なミラーを設定する
- mirror.gcr.ioとか
- dockerコマンドにそういう設定がある
とはいえ、これらはそれなりに手を動かす必要があり、「Dockerをちょっと便利なVM代わりに使ってるだけなんだよな…」みたいな人には、正直ちょっと面倒かもしれません。
もしかすると「アカウント作っても100回じゃ足りない」という人も中にはいるかもしれません。
(そこまでこき使うなら素直にお金払えよとか、自前でイメージ管理するなりキャッシュ使うなりしろよ...とも思いますが)
細かいことを考えたくないので、Google先生に全部押し付けて解決する
Dockerでは、
ubuntu:noble
のようにDocker Hubのイメージを直接指定するケースが多いです。
これを、単純に
mirror.gcr.io/library/ubuntu:noble
に書き換えるだけで、常時Googleのミラーから取得するようになります。
mirror.gcr.io
はGoogle Cloudが提供するDocker Hubのキャッシュです。
https://cloud.google.com/artifact-registry/docs/pull-cached-dockerhub-images?hl=ja
具体例:Dockerfile編
たとえば、以下のように書かれているDockerfileがあった場合
FROM ubuntu:noble
以下のようにすれば全てをGoogle先生に押し付けてレートリミットから逃れることができます
FROM mirror.gcr.io/library/ubuntu:noble
mirror.gcr.io/library/
をつけるだけ! 超簡単!!!
最後に
Googleに全部を押し付ける、以上って感じですがミラーはミラーでしかないのも事実。
お目当てのものがちゃんとミラーされているのか、そもそもミラーに関して要注意挙動はないか(例:
https://qiita.com/kahirokunn/items/e8cb148698dd6f8f2c35
)は要確認だと思います。
とにかく 節度を持って使いましょう。