Вопрос проверяет знание принципов Docker-сборки и умение диагностировать проблемы производительности в CI.
Основные причины — большой контекст сборки, неэффективное использование слоёв и отсутствие кеширования. Часто замедляют сборку лишние COPY, установка зависимостей при каждом билде и неправильный порядок инструкций. В CI эти проблемы проявляются особенно сильно.
Время сборки Docker-образа — это сумма времени выполнения всех инструкций Dockerfile с учётом (или без учёта) кеша слоёв.
Перед перечислением важно понимать: Docker кеширует слои строго по порядку инструкций.
Если в контекст попадает лишнее:
.git
виртуальные окружения
логи
временные файлы
Docker вынужден передавать их демону при каждом билде.
.dockerignoreБез .dockerignore:
растёт объём передаваемых данных
кеш слоёв инвалидируется чаще
Пример плохого порядка:
COPY . .
RUN pip install -r requirements.txt
Любое изменение в коде сбрасывает кеш установки зависимостей.
Использование:
python:latest
ubuntu
увеличивает:
время загрузки
размер итогового образа
Без неё:
в образ попадают build-зависимости
увеличивается размер и время сборки
Долгая сборка Docker-образов почти всегда сигнализирует о проблемах в Dockerfile или контексте сборки.