🪞

レジストリミラーにmirror.gcr.ioを設定してDocker Hubのレートリミットに備える

2025/03/06に公開

はじめに

記事執筆時の2025年3月現在、Docker Hubのpull レートが2025年4月から変更されることが予告されています。

https://www.docker.com/blog/revisiting-docker-hub-policies-prioritizing-developer-experience/

未認証のユーザーはIPアドレス毎に1時間あたり10回の制限となり、レートリミットに達しやすくなることが予想されます。
有償プランであればレートリミットはありませんが、別途レートリミットの制限を回避しやすくするためのレジストリミラーとしてmirror.gcr.ioを設定します。

1行まとめ

Docker DesktopのクライアントアプリケーションにあるDocker Engineの設定、もしくは${HOME}/.docker/daemon.json(macOS) or /etc/docker/daemon.json(Linux)に以下の内容を追記します。

{
  "registry-mirrors": [
    "https://mirror.gcr.io"
  ]
}

Docker Hubのレジストリミラーを設定する

Docker Hubはレジストリミラーを設定できます。
dockerdを起動する際に--registry-mirrorのオプションを渡すか、daemon.jsonに設定を追加します。
Docker Desktopを利用している場合は、Docker DesktopのクライアントアプリケーションにあるDocker Engineの設定から同様の設定が可能です。

https://docs.docker.com/docker-hub/image-library/mirror/#configure-the-docker-daemon
https://docs.docker.com/reference/cli/dockerd/#daemon-configuration-file

{
  "registry-mirrors": []
}

daemon.jsonの場所はOSによって異なります。
以下の場所に置かれていることが多いです。

  • macOS: ${HOME}/.docker/daemon.json
  • Linux: /etc/docker/daemon.json

公開されているレジストリミラー

Google Cloudがレジストリのミラーを公開しています。[1]

https://cloud.google.com/artifact-registry/docs/pull-cached-dockerhub-images

Artifact Registry caches frequently-accessed public Docker Hub images on mirror.gcr.io.

記載がある通りキャッシュしているイメージは一部に限られます。
キャッシュ対象のイメージは公開されていませんが、docker pull mirror.gcr.io/{IMAGE_NAME}のようにpullすることで確認できます。

先ほどのregistory-mirrorの設定にhttps://mirror.gcr.ioを追加してdocker pullを実行したら、mirror.gcr.ioにイメージを探しに行きます。存在すればそのままpull、無ければDocker Hubからpullする挙動になります。

{
  "registry-mirrors": [
    "https://mirror.gcr.io"
  ]
}
$ docker system info
Client: Docker Engine - Community
 Version:    28.0.1
 Context:    default
#中略
 Registry Mirrors:
  https://mirror.gcr.io/

その他

  • Dockerfileの修正が必要になりますが、AWSをメインのクラウドとして利用しているのであればECR PublicをAWS IAMユーザーで認証して利用する方法もおすすめです
  • パブリックなレジストリミラーは他にもありますが、Google Cloud以外に制限ない信頼できるミラーは調べた範囲では見つかりませんでした
  • レジストリの運用が問題にならないのであれば、キャッシュのためのPrivate Registryを立てるのも一案です
脚注
  1. 関係者曰く制限がないそうです。今後はわかりません https://knqyf263.hatenablog.com/entry/2025/02/28/210820 ↩︎

GitHubで編集を提案

Discussion