やりたいこと
環境構築の試行錯誤する中で、毎回 Debian のミラーサイトにアクセスするのは心苦しい。 なので、ローカルに apt のキャッシュサーバーを立てたい。
実現方針
- apt-cacher-ng 用のイメージ作成
- apt-cacher-ng 用のキャッシュ用の Named Volume 作成
- 実験環境用の
docker-compose.yml
ひな形を作成- 実験用コンテナと、 apt-cacher-ng 用コンテナがネットワークでつながるようにする
- 実験用コンテナが「2.」で作った Named Volume を使うように設定
これで、各実験環境ごとに apt-cacher-ng サーバが立ち上がり、共有している Volume のキャッシュを使用することで、ミラーサイトへのアクセスを減らすことができるはず。
環境
OS: Windows 10 Pro
やったこと
apt-cacher-ng 用のイメージ作成
コンテナ用ディレクトリ作成
$ mkdir -p ~/project/docker/apt-cacher-ng
$ cd ~/project/docker/apt-cacher-ng
Dockerfile 作成
Dockerize an apt-cacher-ng service を参考に作成。
VOLUME
, EXPOSE
は、 docker-compose
で指定する想定なので削った。
■ Dockerfile
FROM debian:stretch-slim
RUN apt -y update
RUN apt -y upgrade
RUN apt -y install apt-cacher-ng
CMD chmod 777 /var/cache/apt-cacher-ng && /etc/init.d/apt-cacher-ng start && tail -f /var/log/apt-cacher-ng/*
イメージのビルド
cd ~/project/docker/apt-cacher-ng
docker build -t apt-cacher-ng .
作成したイメージの確認
docker images
を実行すると、今作ったイメージが表示されるはず。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
apt-cacher-ng latest fc58ec7f120b About a minute ago 79.2MB
apt-cacher-ng 用のキャッシュ用の Named Volume 作成
docker volume create
するだけ。
$ docker volume create apt-cacher-ng
apt-cacher-ng
$ docker volume ls
DRIVER VOLUME NAME
local apt-cacher-ng
実験環境のひな形を作成
apt のプロキシ設定済みのイメージを作成
$ mkdir -p ~\project\docker\test-base
$ cd ~\project\docker\test-base
ファイル類作成
■ Dockerfile
FROM debian:stretch-slim
COPY ./02proxy /etc/apt/apt.conf.d/02proxy
■ 02proxy
Acquire::http::Proxy "http://apt-cacher-ng:3142/";
イメージのビルド
docker image -t test-base .
ひな形から実験環境を構築する
実験環境用のディレクトリを作って docker-compose.yml
を作る
$ mkdir -p ~/project/docker/target
$ cd ~/project/docker/target
$ gvim docker-compose.yml
試行錯誤した結果、こんな感じでよいのではないかと。
■ docker-compose.yml
version: '3'
services:
# apt-cacher-ng 用の設定
apt-cacher-ng:
image: apt-cacher-ng
# apt-cacher-ng 用の Named Volume を指定
# Named Volume の apt-cacher-ng が、
# コンテナの /var/cache/apt-cacher-ng にマウントされる
volumes:
- apt-cacher-ng:/var/cache/apt-cacher-ng
# ポートを開ける
expose:
- 3142
# 実験環境用のコンテナ設定
target:
image: test-base
volumes:
apt-cacher-ng:
external: true
動作確認
最初の 1 つを作る
apt-cacher-ng のキャッシュが空であることを確認。
$ docker-compose up -d
Creating target_apt-cacher-ng_1 ...
Creating target_target_1 ...
Creating target_target_1
Creating target_apt-cacher-ng_1 ... done
$ docker-compose run apt-cacher-ng /bin/bash
root@a187654c95e3:/# ls /var/cache/apt-cacher-ng/
_xstore
root@a187654c95e3:/# exit
exit
target で、とりあえず git をインストールしてみる。
$ docker-compose run target /bin/bash
root@89ce826c2a94:/# apt -y update; apt -y upgrade; apt -y install git
また apt-cacher-ng に戻って、ログやらキャッシュやらを確認。
$ docker-compose logs apt-cacher-ng
$ docker-compose run apt-cacher-ng /bin/bash
root@310265d1d8e3:/# ls /var/cache/apt-cacher-ng/
中身増えてますね。きちんと動いていそう。
2 つめを作る
一つ目のキャッシュファイルがあることを確認。
$ mkdir ~/project/docker/target2/
$ cd ~/project/docker/target2/
$ cp ~/project/docker/target/docker-compose.yml .
$ docker-compose up -d
$ docker-compose run apt-cacher-ng /bin/bash
root@57d7dc4b271b:/# ls /var/cache/apt-cacher-ng/
うん、増えてますね。 さっきと同じように git インストールまでやってみる。
$ docker-compose run target /bin/bash
root@4aa9a5c1021b:/# apt -y update; apt -y upgrade; apt -y install git
ログを確認。
$ docker-compose logs apt-cacher-ng
うん、効いていそう。
以上。
変更履歴
版 | 日付 | 修正内容 |
---|---|---|
v1 | 2017/7/15 | 新規作成 |
v2 | 2017/7/16 | docker-compose.yml の「ポートを開ける」を ports から expose に変更。 (ホストに公開する必要がないため。) |
0 件のコメント:
コメントを投稿