Выбор ответа Middle Образы и слои спрашивают часто обновлено

Удаление файла в следующем слое

Вопрос

В Dockerfile одна инструкция RUN скачивает архив на 500 МБ, а следующая RUN rm archive.tar. Уменьшится ли образ?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Нет: файл остаётся в предыдущем слое, новый слой лишь помечает его удалённым. Слои неизменяемы: каждый хранит разницу с предыдущим.

Варианты ответа

  1. Да, на 500 МБ: rm в следующем слое освобождает место в предыдущем
  2. Нет: файл остаётся в предыдущем слое, новый слой лишь помечает его удалённымправильный ответ
  3. Да, но только после docker image prune, который схлопнет удалённые файлы в слоях
  4. Нет, потому что rm в Dockerfile запрещён и инструкция будет пропущена

Разбор

Слои неизменяемы: каждый хранит разницу с предыдущим. Удаление создаёт в новом слое отметку whiteout, а 500 МБ остаются в старом слое и скачиваются при pull. Правильно скачивать, распаковывать и удалять в одной инструкции RUN или использовать multi-stage. prune удаляет неиспользуемые образы, а не части слоёв.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.