Я создаю docker образ для запуска заданий пряжи.
Чтобы установить пряжу, мне нужен curl для получения хранилища пакетов. После установки пряжи я больше не заинтересован в скручивании, поэтому я снова его очищаю.
Но это никак не влияет на результирующий размер изображения docker, так как слой с установленным скручиванием является неподвижным и лежащим под ним слоем изображения (поскольку Я понимаю docker изображения).
Меня меньше интересует этот конкретный c случай (скручивание и пряжа), но в целом, как минимизировать мое docker изображение в таком сценарии. Как я могу «очистить» ненужный нижележащий слой в моем docker изображении?
Пример Dockerfile для справки:
FROM ubuntu:focal
# Updating and installing curl (not required in final image)
RUN apt update && apt install -y curl
# Using curl to install yarn
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - &&\
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
apt update && apt install -y yarn
# Doing cleanup (no positive effect on image size)
RUN apt purge -y curl && rm -rf /var/lib/apt/lists/* && apt autoremove -y && apt clean -y
РЕДАКТИРОВАТЬ:
Просто для пояснения:
ubuntu/focal
сам по себе имеет размер всего 74 МБ.
После запуска apt update
он составляет 95 МБ
После apt installing curl wget git
он равен 198 МБ
Даже очистка всех этих установок не приносит Возвращаясь к 74-мегабайтной многоступенчатой сборке
, это хорошая концепция, которую я рассмотрю.
Этот вопрос, хотя и касается вопроса, можно ли уменьшить размер одного изображения снова.