Выбор ответа Middle Docker для разработчика обновлено
Удаление файла в следующем слое
Вопрос
Уменьшится ли образ после второй строки?
RUN curl -o /tmp/sdk.tar.gz https://example.com/sdk.tar.gz && tar -xzf /tmp/sdk.tar.gz -C /opt
RUN rm /tmp/sdk.tar.gz
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Нет: архив остался в предыдущем слое. Слои неизменяемы.
Варианты ответа
- Да, архив удалён, и образ стал меньше на его размер
- Нет, потому что /tmp не удаляется в контейнерах
- Да, но только после
docker image prune - Нет: архив остался в предыдущем слоеправильный ответ
Разбор
Слои неизменяемы. Удаление в следующем слое скрывает файл, но байты остаются в слое, где его создали, и образ не уменьшается. Удалять нужно в той же инструкции: ... && tar ... && rm /tmp/sdk.tar.gz. Ещё лучше вынести загрузку в отдельную стадию multi-stage сборки.
pruneудаляет неиспользуемые образы, а не слои внутри используемого.- /tmp удаляется как любая папка, дело в слоях.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.