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.