- docker pull が遅い。
- 軽量化?いいやキャッシュが先だ
- apt-cacher みたいなのほしい。
- docker hub mirror registry を起動して使う
- docker に設定する。
- 効果測定
- 何処で使うのか。
- 参考資料
docker pull が遅い。
docker hub からのpull が遅い。docker-machine を作ったりvirtualbox で遊んでたりすると遅いんですよ。docker pullが
軽量化?いいやキャッシュが先だ
「お前のDockerイメージはまだ重い」とかDockerイメージの軽量化かダイエットに関する記事も多いんだけど、その時間も惜しい。dockerのコンテナの目的の一つが時間の節約だ。alpineで、秘伝のスープみたいなDockerfile を書くためのノウハウを蓄積する時間をダイエットしたいんだ。
まずは、ダイエットに時間掛けるより先にキャッシュでなんとかしてみよう。
apt-cacher みたいなのほしい。
docker の build 時や起動時の apt も遅かったり、docker build 時にすぐキャッシュが消えて apt が再実行されるので apt-cacher も速くするのに有効だった。
幾つものmachine で次々やってると docker hub の遅さも辛い。
docker hub mirror registry を起動して使う
Registry as a pull through cache | Docker Documentation に詳しいことが書いてあった。
設定は次の通り
- docker registry に mirroring の設定をする
- 手元のdocker に mirroring を使うように設定する。
docker registry に mirroring の設定をする
docker hub はログインしないと使えないので、ミラー用につかうレジストリが docker hub にログインできるように設定する。
proxy: remoteurl: https://registry-1.docker.io username: [username] password: [password]
これは面倒くさいので、docker イメージにした。
Dockerfile
FROM registry:2 RUN echo -ne "\ proxy:\n\ remoteurl: https://registry-1.docker.io\n\ username: takuyaXXXXX\n\ password: PASSWORDn\ " >> /etc/docker/registry/config.yml
起動すら面倒くさい
起動すら面倒くさいので makefile 書いておいた。
make run
docker-compose は apt-cacheや HTTPプロキシと併せて起動するように別に書いた。
githubにおいておいた。
docker に設定する。
Docker for Mac に設定した。docker for Macが、ミラーを使ってくれるように設定した。
効果測定
じゃあ、これでどれくらい時短が出来るのか。
最後にどれくらい速くなる?測定だ
mirror のキャッシュが効く前(初回ロード)
takuya@docker-compose$ time docker pull ubuntu Using default tag: latest latest: Pulling from library/ubuntu 50aff78429b1: Pull complete f6d82e297bce: Pull complete 275abb2c8a6f: Pull complete 9f15a39356d6: Pull complete fc0342a94c89: Pull complete Digest: sha256:fbaf303d18563e57a3c1a0005356ad102509b60884f3aa89ef9a90c0ea5d1212 Status: Downloaded newer image for ubuntu:latest real 0m19.145s user 0m0.047s sys 0m0.043s
mirror でのキャッシュしたあと
docker rmi ubuntu
でキャッシュを消して 再度取得してみる。
$ time docker rmi ubuntu $ time docker pull ubuntu Using default tag: latest latest: Pulling from library/ubuntu 50aff78429b1: Pull complete f6d82e297bce: Pull complete 275abb2c8a6f: Pull complete 9f15a39356d6: Pull complete fc0342a94c89: Pull complete Digest: sha256:fbaf303d18563e57a3c1a0005356ad102509b60884f3aa89ef9a90c0ea5d1212 Status: Downloaded newer image for ubuntu:latest real 0m4.883s user 0m0.043s sys 0m0.035s
比較
効果はバツグンだ。
導入前 | 導入後 | 時間差 |
---|---|---|
19.145s | 4.883s | 14s |
何処で使うのか。
イントラですよイントラ。
docker-machine が全部ミラー用を見るようにしておけば、virualbox などの docker-machineもバンバン使えるね。