Выбор ответа Middle Образы и слои спрашивают часто обновлено
Удаление файла в следующем слое
Вопрос
В Dockerfile одна инструкция RUN скачивает архив на 500 МБ, а следующая RUN rm archive.tar. Уменьшится ли образ?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Нет: файл остаётся в предыдущем слое, новый слой лишь помечает его удалённым. Слои неизменяемы: каждый хранит разницу с предыдущим.
Варианты ответа
- Да, на 500 МБ:
rmв следующем слое освобождает место в предыдущем - Нет: файл остаётся в предыдущем слое, новый слой лишь помечает его удалённымправильный ответ
- Да, но только после
docker image prune, который схлопнет удалённые файлы в слоях - Нет, потому что
rmв Dockerfile запрещён и инструкция будет пропущена
Разбор
Слои неизменяемы: каждый хранит разницу с предыдущим. Удаление создаёт в новом слое отметку whiteout, а 500 МБ остаются в старом слое и скачиваются при pull. Правильно скачивать, распаковывать и удалять в одной инструкции RUN или использовать multi-stage. prune удаляет неиспользуемые образы, а не части слоёв.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.