Вопрос на собеседовании · DevOps-инженер
Как уменьшить размер Docker-образа?
Короткий ответ, ключевые тезисы и ошибки, которых стоит избежать на интервью.
Основные меры — multi-stage build, минимальный runtime-образ, точный .dockerignore и установка только production-зависимостей. Инструменты сборки и исходники остаются в builder-стадии, а в финальную попадают только нужные бинарники и сертификаты.
Размер слоёв уменьшают очисткой кеша в том же RUN, где ставятся пакеты, и удалением ненужных файлов до фиксации слоя. После изменений сравнивают не только мегабайты, но и CVE, время сборки, кеширование и совместимость runtime.
01 · Структура ответа
Что важно сказать интервьюеру
Раскройте тезисы, которые относятся именно к этому вопросу, и поясните их на собственном примере:
02 · Пример
Как объяснить на практике
Go-сервис собирается в golang-образе с кешем модулей, затем статический бинарник и CA-сертификаты копируются в distroless. Компилятор и исходники в production-образ не попадают.
Не заучивайте формулировку дословно. Свяжите принцип с задачей из собственного проекта — интервьюер почти наверняка попросит уточнить детали реализации и компромиссы.
03 · Ошибки
Чего избегать в ответе
04 · Углубление
Что могут спросить следом
- Как порядок COPY влияет на кеш?
- Чем distroless отличается от scratch?
- Как найти самый тяжёлый слой?
05 · Проверка фактов
Первоисточники по теме
Ссылки ниже помогают проверить понятия, методы и ограничения по теме. Они не являются доказательством того, что этот вопрос задают на каждом собеседовании.
- Docker Docs: Multi-stage builds — Отделение стадии сборки от runtime-образа.
Практика ответа
Ответьте вслух, а не про себя
Откроем тренировку сразу на этом вопросе. Выберите грейд, сформулируйте ответ и сравните его с подсказкой.
Mira