Docker HubのPull回数制限はすでに始まっている


はじめに

2020年11月1日からDocker HubのPull回数制限が始まるのかー。
ログインせずにPullしてるし、それまでに対応しないといけないなーと考えていたのですが、思っていたよりも早くDocker HubのPull制限に引っかかってしまったので、原因と対応方法について調べました。

[Container] 2020/09/02 10:11:15 Running command docker build -t $REPOSITORY_URI:latest .
Sending build context to Docker daemon  122.9kB
Step 1/7 : FROM alpine:3.11
3.11: Pulling from library/alpine
cbdbe7a5bc2a: Pulling fs layer
error pulling image configuration: toomanyrequests: Too Many Requests. Please see https://docs.docker.com/docker-hub/download-rate-limit/
[Container] 2020/09/02 10:11:20 Command did not exit successfully docker build -t $REPOSITORY_URI:latest . exit status 1

原因

Docker Hubがコンテナイメージの保存期間に加えてPull回数にも上限を設定すると発表」の

Pull回数の制限は保存期間の制限と同じく、2020年11月1日より適用されます。

を読んで、完全に勘違いしていました
今回問題に遭遇した際に一次ソースを確認したところ、Docker公式サイトのDownload rate limitには、以下のように記載されていました。

Docker will gradually introduce these rate limits, with full effects starting from November 1st, 2020.
Dockerでは2020年11月1日から本格的な効果が出るように、これらのレート制限を段階的に導入していきます。

Docker HubのPull回数制限は段階的にではありますが、すでに導入が始まっていたのです。。。

対応方法

ログインなしの匿名ユーザの場合はIPアドレスをもとに制限されるため、自分で6時間あたり100回のダウンロードを実行していなかったとしても制限が適用されてしまう可能性があります。
(まさに今回の私がそうでした。。。)

このため、無料ユーザーでも問題ないのでDocker Hubに登録したユーザーでログインして、Pullを実行するようにしましょう。

$docker login

登録済みの無料ユーザーの場合は、6時間あたり200回まで無料でPullを実行することができます。
6時間あたり200回以上のPullを実行する必要がある場合は、ProプランもしくはTeamプランの利用を検討しましょう。

ユーザ Pullの回数制限
匿名ユーザー
(ログインなし)
6時間あたり100回まで1
無料ユーザー 6時間あたり200回まで
Proプランユーザー/
Teamプランユーザー
無制限

あとがき

今回の教訓として、面倒くさがらずに一次ソースをちゃんと確認することが大事だなと思いました。
日頃から技術に関して呟いているので、Twitter もフォローしてもらえると嬉しいです。

参考情報


  1. IPアドレスをもとに制限されるため、6時間あたり100回のダウンロードを実行していなかったとしても制限が適用されてしまう可能性あり。