Вступить в клуб →
средняявопросDocker и сборка образов

Очистка пакетов отдельным слоем не уменьшила образ

Инженер уменьшает образ сервиса и приносит такой Dockerfile:

FROM ubuntu:22.04
RUN apt-get update && apt-get install -y build-essential cmake git
RUN ./configure && make && make install
RUN apt-get purge -y build-essential cmake git && \
    apt-get autoremove -y && rm -rf /var/lib/apt/lists/*

После сборки docker images показывает те же 1.4 ГБ, что и раньше.

Почему очистка не дала эффекта?

  • `apt-get purge` не удаляет файлы, а только помечает пакеты удалёнными в базе dpkg
  • Docker переиспользовал слои из кэша и фактически не выполнил инструкцию с очисткой: нужно пересобрать образ с флагом `--no-cache`, и тогда размер уменьшится
  • Каждая инструкция создаёт новый слой: удалённые файлы остаются в нижних слоях, а верхний слой лишь помечает их скрытыми — итоговый размер не падает
  • Размер образа определяется базовым `ubuntu:22.04`, слои приложения на него не влияют
  • Нужно вызвать `docker system prune` после сборки, чтобы размер пересчитался

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела