Acelere suas instalações com um apt-cacher-ng docker-ized

Todo mundo odeia baixar o mesmo pacote várias vezes. Fica ainda pior quando você faz isso constantemente ao criar imagens do docker.

O processo de dockerizing apt-cacher-ng é muito bem documentado aqui . Consulte o link para uma leitura aprofundada ou continue para obter uma amostra rápida.

Opcionalmente, você pode encontrar uma gravação
do processo abaixo no asciinema.

Precisamos construir a imagem do docker primeiro. Você pode usar este Dockerfile

# Taken from: https://docs.docker.com/examples/apt-cacher-ng/
FROM ubuntu

MAINTAINER
SvenDowideit@docker.com

VOLUME
/var/cache/apt-cacher-ng
RUN apt
-get update && apt-get install -y apt-cacher-ng

EXPOSE
3142
CMD chmod
777 /var/cache/apt-cacher-ng &&
/etc/init.d/apt-cacher-ng start &&
tail
-f /var/log/apt-cacher-ng/*

Construa usando

$ docker build -t cacher:latest .

Quando a imagem cacher terminar de construir, execute-a usando o seguinte:

$ docker run -d -p 3142:3142 --name cacher cacher:latest

Agora vamos disparar (# 1) um ubuntu: último contêiner e fazê-lo se comunicar com nosso cacher e instalar um pacote.

$ docker run --link cacher:cacher -e http_proxy=http://cacher:3142 -ti ubuntu:latest apt-get install -y python 

A primeira instalação de um pacote específico irá baixá-lo da Internet e armazená-lo em cache. Aqui está um exemplo de trecho do registro do cacher:

$ docker logs cacher      
...
1429789936|I|1190396|172.17.0.106|uburep/pool/main/p/python2.7/python2.7-minimal_2.7.6-8_amd64.deb 1429789936|O|1190427|172.17.0.106|uburep/pool/main/p/python2.7/python2.7-minimal_2.7.6-8_amd64.deb
...

Agora execute novamente outro contêiner usando o mesmo comando emitido antes (ref # 1). Observe como, em vez de baixar da internet, o apt-get recupera o pacote instantaneamente do cacher.