docker build おそい。。。
Dockerfileを書くのが苦痛。ちょっと変えたらすぐに再構築が行われて、上手くキャッシュが効かないことが在る。
apt-update で待たされる。
apt-get update && apt upgrade && apt install
がもう無理。1度や2度なら我慢するけど、10回実行する可能性があるならもう我慢できない。
キャッシュしようキャッシュ。
apt-cacher-ngでキャッシュしよう。
--- version: '2' services: apt-cacher: container_name: proxies-apt-cacher image: sameersbn/apt-cacher-ng ports: - 3142:3142
docker-composer
docker-composer up -d
クライアント側にキャッシュ設定書こう。
dockerfile作ってるときだけつかう、APT設定ファイル書きましょう
Dockerfile
APT の設定をdocker ファイル作ってるときだけ cacher に向けて、build を考える速度で実行できるようにしておきたい。
apt-cacher-ng は debian でも ubuntu でもどちらでも受け付けてくれる万能選手なので優秀だ。
ubuntu の例。
FROM ubuntu:artful MAINTAINER takuya_1st ## docker file 作成時の用途 RUN echo 'Acquire::HTTP::Proxy "http://172.17.0.1:3142";' >> /etc/apt/apt.conf.d/01proxy \ && echo 'Acquire::HTTPS::Proxy "false";' >> /etc/apt/apt.conf.d/01proxy RUN echo 'APT::Install-Recommends 0;' >> /etc/apt/apt.conf.d/01norecommends \ && echo 'APT::Install-Suggests 0;' >> /etc/apt/apt.conf.d/01norecommends ## jaist にお願いする。 RUN sed -i.bak -s 's%http://archive.ubuntu.com/ubuntu/%http://ftp.jaist.ac.jp/pub/Linux/ubuntu/%g' /etc/apt/sources.list # RUN sed -i.bak -s 's%http://security.ubuntu.com/ubuntu/%http://ftp.jaist.ac.jp/pub/Linux/ubuntu/%g' /etc/apt/sources.list
docker registry mirror と組み合わせる
ボトルネックを解消する。 docker 作ってて困るボトルネックは大きく4つ
- apt install
- docker pull
- git clone
- composer.phar install
これらをまとめて対策したいが、git clone と composer はちょっとめんどくさいので後回しにした。
docker pull を速くする、docker レジストリのミラー機能と組み合わせてまとめて起動しちゃう。
併せた。
--- version: '2' services: apt-cacher: container_name: proxies-apt-cacher image: sameersbn/apt-cacher-ng ports: - 3142:3142 docker-registry-proxy: container_name: proxies-docker-registry image: my.reg.example.com/docker-registry-proxy ports: - 5000:5000
これでだいぶ楽になった。
Dockerfile 書いたら負けって解ってるんだけど、docker pull で持ってきたイメージの中でapt update されてたりするのでだいぶ楽になった。思考を止めず、思考の速度でdockerfile 記述に一歩近づいた
関連資料
dockerのプロキシ(docker mirror registry)を設置してdocker hubからのpullを早くする - それマグで!