Docker Hubのdownload rate limitとは?
以前この記事で詳しく紹介した(翻訳ですが…)とおり、みんな大好きDocker Hubを無料で使っていると次のような利用制限がかかります。
ダウンロードの制限
イメージのプルが制限され、匿名ユーザーは6時間あたり100回、無料アカウントだと6時間あたり200回までとなります。
今日はダウンロードの際、JFrog Artifactory(クラウド版)をプロキシとして間に挟むことでこの回数をなるべく消費せずにDockerイメージを取得する方法を見ていきます。他のメリット含め、詳細は先ほど紹介した記事をご覧ください!
Artifactoryの設定をする
Artifactoryのアカウントを作成する
ここからクラウド版の無料アカウントを作成します。もちろん有料アカウントをお持ちの方はそちらをお使いいただけます。
サーバー名(Server Name)はお好きなものを指定してください。 <サーバー名>.jfrog.io
にアクセスすればJFrog Platformが使えるようになります。なお、既に他のサーバーで使われている名前は指定できません。
リモートリポジトリを作成する
リポジトリにはいくつか種類がありますが、Docker Hubのように別のリポジトリと接続するときはリモートリポジトリを使います。
- リポジトリ名は何でも良いですが、
<特徴(アプリ名、サービス名など)>-<パッケージの種類>-<リポジトリの種類>
とするのが分かりやすくてオススメです。ここではexample-docker-remote
としました - URLにはイメージの取得先としてDocker Hub
https://registry-1.docker.io/
を指定します(デフォルトで入力されています)。 - Docker Hubにログインした状態でイメージを取得するには、ログイン情報も入力します
Save & Finish
をクリックするとリポジトリが作成され、次のような画面が表示されます。ログインなどの操作をコマンドラインで行うのに便利です。
Dockerイメージをpullする
例としてGradleのイメージを取得することとします。普通にDocker Hubからダウンロードする場合、 docker pull gradle
とやる操作です。
Artifactoryを介してDocker Hubにアクセスできるよう、まずはログインします(Docker for Mac / Windowsを使っている場合はsudo
が要りません)。 *1
sudo docker login <サーバー名>.jfrog.io
続いて、必要なイメージをArtifactory経由でpullします。 *2
docker pull <サーバー名>.jfrog.io/example-docker-remote/gradle:latest
これで初回のみDocker Hubへアクセスしますが、1度コンテナイメージを取得したらArtifactoryにキャッシュされるので、2回目以降はそこから取得するようになります。
取得済みのアーティファクトはArtifactoryのUI上でも確認することができます。
ちなみに
自分のダウンロード回数の確認
残り何回ダウンロードできるかは Download rate limit | Docker Documentation に記載されている方法で調べることが可能です。
リモートリポジトリへの操作のコマンド確認
上で紹介したリポジトリ作成直後に表示されるコマンドは、後からも確認できます。ArtifactsのビューでSet Me Up
をクリックしてください。
すると、さっきみたいな画面がまた表示されます。
バーチャルリポジトリの利用
今回はリモートリポジトリ経由での操作を紹介しましたが、リモートリポジトリと紐付いたバーチャルリポジトリを使うことも可能です。
バーチャルリポジトリとは、複数のリポジトリを束ねるためのリポジトリです。用途ごとに複数のリポジトリを作ってある場合も、リモートリポジトリに対して操作を行うことでリポジトリの使い分けを意識しなくて済むので楽です。
以上、この簡単なステップだけでDocker Hubの制限に悩まされることも減るはずです。無料でお気軽に始められるのでぜひお試しあれ😋