ℹ️ Сборка Docker-образов может занимать много времени из-за скачивания пакетов через APT. Даже если в пакеты не вносятся изменения, они каждый раз загружаются заново. Но это можно оптимизировать с помощью локального кэша для APT, что существенно ускорит сборку образов и снизит нагрузку на сеть.
⚡️1. Используем apt-cacher-ng для кэширования пакетов:
Для этого можно запустить отдельный контейнер с кэширующим прокси, который будет сохранять все скаченные APT-пакеты. После этого любые сборки Docker-образов будут обращаться к этому кэшу вместо прямого обращения к интернет-репозиториям.
📑 2. Настройка Dockerfile:
Для того чтобы ваш контейнер использовал этот кэш, в Dockerfile нужно указать прокси-сервер для APT.
FROM ubuntu:20.04
# Установка apt-cacher-ng
RUN apt-get update && \
apt-get install -y apt-cacher-ng
# Настраиваем APT на использование кэша
RUN echo 'Acquire::http::Proxy "http://172.17.0.1:3142";' > /etc/apt/apt.conf.d/01proxy
# Пример установки пакетов через кэш
RUN apt-get update && \
apt-get install -y curl git vim
❗️ Обратите внимание на IP-адрес 172.17.0.1. Это адрес хоста в сети Docker, к которому контейнеры имеют доступ. Вы можете настроить его в зависимости от вашей сети.
🐳 3. Запуск контейнера с apt-cacher-ng:
docker run -d --name apt-cache -p 3142:3142 -v apt-cache:/var/cache/apt-cacher-ng ubuntu:20.04 \
/usr/sbin/apt-cacher-ng
ℹ️ Как это ускоряет сборку?
После того как пакеты один раз были скачаны и закэшированы, при последующих сборках Docker-образа эти пакеты будут загружаться из локального кэша, что значительно ускоряет процесс и снижает потребление трафика.
✳️ Почему это полезно?
- - Экономия времени: повторные сборки используют локальные копии пакетов, что ускоряет процесс.
- - Оптимизация сети: меньше запросов к публичным репозиториям, что снижает нагрузку на сеть.
- - Легко интегрируется: этот метод можно использовать как в локальных сборках, так и в CI/CD пайплайнах, чтобы ускорить деплой.
tags: #полезно #docker
🧭 @recura_tech


