Очистка пакетов отдельным слоем не уменьшила образ
Инженер уменьшает образ сервиса и приносит такой 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` после сборки, чтобы размер пересчитался
