featured_image
2025-03-24
Image: Image created with Grok

常時mirror.gcr.ioからプルするようDockerfileを変更して、Docker Hubのレートリミットを速攻回避する

Google Cloud万歳

KEY POINTS
  • 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 )は要確認だと思います。

とにかく 節度を持って使いましょう。