仮想マシンをインストールしていると、aptの通信ロスが時間ロスになって気になった。
1分程度だけど、何度も実行してると疲れてくるので、apt-cacher-ngを使うことにした。
apt-cacher-ng をdocker で起動する
--- version: '2' services: apt-cacher: container_name: proxies-apt-cacher image: sameersbn/apt-cacher-ng ports: - 3142:3142
docker-compose で起動する
sudo docker-compose pull sudo docker-compose up
apt に設定して使う場合
echo 'Acquire::HTTP::Proxy "http://172.17.0.1:3142";' |sudo tee /etc/apt/apt.conf.d/01proxy
名前解決ができる場合。
echo 'Acquire::HTTP::Proxy "http://apt-cacher.lan";' |sudo tee /etc/apt/apt.conf.d/01proxy
preseedで使う場合
preseed.cfg に次のとおりに記載する。(ip は環境依存)
d-i mirror/country string manual d-i mirror/http/hostname string debian-mirror.sakura.ne.jp d-i mirror/http/directory string /debian d-i mirror/http/proxy string http://172.17.0.1:3142
使ってみた結果
ローカルホストでミラーは速いですよね。やっぱり。ボトルネックは純粋にディスクIOだけになった。
docker で作ったapt-cacher-ngの場合、apt-cacherのまれなエラーで自動処理が止まることがある。
proxies-apt-cacher | [warn] Epoll ADD(1) on fd 12 failed. Old events were 0; read change was 1 (add); write change was 0 (none); close change was 0 (none): Bad file descriptor
apt-cacher-ng は概ね良好に起動するが、まれにエラーが出て、APTパッケージの取得に失敗する。再度トライすれば問題なくインストールが終わる。
手作業でインストールするときはもんだ無いが、完全無人だと気づかずにインストールが死ぬので、問題が多い。
無人インストールでapt-cacherを使うなら、手作業で初回キャッシュさせたほうが無難かもしれない。
apt-cache-ng は単なるプロキシ
ちょっと変わったプロキシなので、ubuntu/debian だけでなく、cygwin や centos(yum)でも使えるので、ローカルや組織内に1つくらいあってもいいかもしれない。
指定の仕方 インストール済み
ubuntu の場合、ここでインストールで指定することもできる
指定の仕方 インストール済み
echo 'Acquire::HTTP::Proxy "http://172.17.0.1:3142";' >> /etc/apt/apt.conf.d/01proxy