Как уменьшить размер Docker-образа?
Docker Compose
Размер уменьшают четырьмя приёмами: лёгкий базовый образ, multi-stage сборка, минимизация числа слоёв с очисткой мусора в том же RUN и выкидывание лишнего из контекста через .dockerignore.
Основные приёмы
- Базовый образ:
alpineилиdistrolessвместо полного дистрибутива; варианты-slim— компромисс с glibc вместо musl. - Multi-stage: компиляция в тяжёлой стадии, в финал копируется только артефакт.
- Очистка в том же слое:
RUN apt-get update && apt-get install -y pkg && rm -rf /var/lib/apt/lists/*— иначе кеш пакетов останется в слое навсегда. - `.dockerignore`: убрать
node_modules,.git, артефакты из контекста — меньше контекст и ниже риск случайногоCOPY . ..
Чем измерять
docker history image:tagпокажет вес каждого слоя; утилита dive — интерактивный разбор.
Коротко для собеседования
Вес образа складывается из базового образа, инструментов сборки и мусора, застрявшего в слоях. Помогают slim, alpine и distroless-базы, multi-stage и очистка в той же инструкции RUN: rm в следующем слое ничего не экономит, потому что байты остаются в предыдущем.