Образ не станет размером 2 KB: архив останется в нижнем COPY-слое, а распакованные данные добавят ещё один слой. Точный размер без содержимого архива неизвестен.
Оценка итогового объёма Docker‑образа после выполнения инструкций
Образ не станет размером 2 KB: архив останется в нижнем COPY-слое, а распакованные данные добавят ещё один слой. Точный размер без содержимого архива неизвестен.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Какой примерный размер получится у Docker‑образа, если использовать следующие файлы:
- big.tar.gz – около 2 ГБ
- small.txt – около 2 KB
FROM alpine
RUN mkdir /opt/tmp
COPY big.tar.gz /opt/tmp/big.tar.gz
RUN tar -xvzf /opt/tmp/big.tar.gz
COPY small.txt /opt/small.txt
RUN rm -rf /opt/tmp
Ответ
Образ не станет размером 2 KB: архив останется в нижнем COPY-слое, а распакованные данные добавят ещё один слой. Точный размер без содержимого архива неизвестен.
Ориентир для несжатой суммы слоёв — базовый Alpine плюс около 2 ГБ архива, распакованные файлы и small.txt. Удаление в следующем RUN скрывает файлы, но не убирает их из прежних слоёв. Кроме того, tar без -C распаковывает в текущий рабочий каталог, не обязательно /opt/tmp. Для уменьшения итогового образа используйте отдельную build-stage с копированием только нужных результатов; размер передачи сжатых слоёв считайте отдельно.
Источник: docs.docker.com.