1
2

More than 1 year has passed since last update.

Gitlab.comを使った開発でDocker Hubからのpull制限を回避するためにDependency Proxyを使う

Posted at

開発中に何度もDocker Hubからpullを実行しているとpull制限に引っかかってしまいます→ダウンロード率制限
これを回避するためGitlab.comではDependency Proxyが用意されています。pull先をDependency ProxyにすることでDocker Hubから落としたイメージがDependency Proxy上にキャッシュされ以後、Dependency Proxy上のキャッシュを参照することになるので、Docker Hubのpull制限にほぼ引っかからなくなります。

使い方

通常の場合

DockerHubのalpine:latestを使いたい場合は以下のようになります。login先がregistry.gitlab.comではなくgitlab.comなことに注意してください。


$ docker login gitlab.com
$ docker pull gitlab.com/<グループ名>/dependency_proxy/containers/alpine:latest

Gitlab CIのパイプライン内で使う場合

.gitlab-ci.yamlを以下のように書けば使用できます。

stages:
  - build

image: docker
services:
  - docker:dind

build:
  stage: build
  tags:
    - docker
  script:
    - docker login -u ${CI_DEPENDENCY_PROXY_USER} -p ${CI_DEPENDENCY_PROXY_PASSWORD} ${CI_DEPENDENCY_PROXY_SERVER}
    - docker pull ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/alpine:latest

Gitlab CI内でデフォルトで用意されているCI_DEPENDENCY_PROXY関連の環境変数を使用してloginとpullをしています。

Dependency Proxyのキャッシュの自動削除

グループの Settings > packages_and_registriesにDependency Proxyに関する設定があります。ここにClear the Dependency Proxy cache automaticallyという設定があるのでオンにしておいたほうが良いかもしれません(デフォルトはオフ)。オンにすると90日ごとにキャッシュをクリアしてくれるようで、同じイメージでも脆弱性対応等でDockerHub側で更新されていることがあったり、latestのものを使っている場合などは勝手に更新されなくなるので必要に応じてここの設定を変更する必要があります。

1
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2