それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

apt-cacherで docker buildを速くする

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を早くする - それマグで!