JFrog Japan Blog

DevOpsを加速する、JFrog日本法人メンバーによるブログです。

JFrog ArtifactoryやXrayといった自社ツールはもちろん、CI/CDやコンテナ技術(DockerやKubernetes)などDevOpsの一般的な内容も扱います。
その他、日本でのDevOps事例紹介やお楽しみコンテンツも掲載予定です。 JFrogならではの面白くて役に立つブログを目指しますので、お楽しみに!

JFrog Artifactoryを使ってDocker Hubのdownload rate limit (ダウンロード回数の制限) を回避する

Docker Hubのdownload rate limitとは?

blog.jfrog.co.jp

以前この記事で詳しく紹介した(翻訳ですが…)とおり、みんな大好きDocker Hubを無料で使っていると次のような利用制限がかかります。

ダウンロードの制限
イメージのプルが制限され、匿名ユーザーは6時間あたり100回、無料アカウントだと6時間あたり200回までとなります。

今日はダウンロードの際、JFrog Artifactory(クラウド版)をプロキシとして間に挟むことでこの回数をなるべく消費せずにDockerイメージを取得する方法を見ていきます。他のメリット含め、詳細は先ほど紹介した記事をご覧ください!

https://cdn-ak.f.st-hatena.com/images/fotolife/i/ihcomega/20200915/20200915055858.png

Artifactoryの設定をする

Artifactoryのアカウントを作成する

jfrog.com

ここからクラウド版の無料アカウントを作成します。もちろん有料アカウントをお持ちの方はそちらをお使いいただけます。
サーバー名(Server Name)はお好きなものを指定してください。 <サーバー名>.jfrog.ioにアクセスすればJFrog Platformが使えるようになります。なお、既に他のサーバーで使われている名前は指定できません。

リモートリポジトリを作成する

リポジトリにはいくつか種類がありますが、Docker Hubのように別のリポジトリと接続するときはリモートリポジトリを使います。

「New Remote Repository」をクリックする

パッケージの種類として「Docker」を選択する

リポジトリ作成に必要な情報を入力する

  • リポジトリ名は何でも良いですが、<特徴(アプリ名、サービス名など)>-<パッケージの種類>-<リポジトリの種類>とするのが分かりやすくてオススメです。ここでは 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 に記載されている方法で調べることが可能です。

ダウンロード回数の上限と残り (あと92/200)

リモートリポジトリへの操作のコマンド確認

上で紹介したリポジトリ作成直後に表示されるコマンドは、後からも確認できます。ArtifactsのビューでSet Me Upをクリックしてください。

右上の「Set Me Up」をクリックする

すると、さっきみたいな画面がまた表示されます。

バーチャルリポジトリの利用

今回はリモートリポジトリ経由での操作を紹介しましたが、リモートリポジトリと紐付いたバーチャルリポジトリを使うことも可能です。
バーチャルリポジトリとは、複数のリポジトリを束ねるためのリポジトリです。用途ごとに複数のリポジトリを作ってある場合も、リモートリポジトリに対して操作を行うことでリポジトリの使い分けを意識しなくて済むので楽です。


以上、この簡単なステップだけでDocker Hubの制限に悩まされることも減るはずです。無料でお気軽に始められるのでぜひお試しあれ😋

*1:Artifactoryのバージョンが古い場合、リポジトリにログインする必要があるかもしれません。その場合は docker login <サーバー名>-example-docker-remote.jfrog.io を試してみてください

*2:Artifactoryのバージョンによっては docker pull <サーバー名>-example-docker-remote.jfrog.io/gradle とする必要があります