Минимизировать размер docker изображения - PullRequest
0 голосов
/ 27 апреля 2020

Я создаю 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-мегабайтной многоступенчатой ​​сборке
, это хорошая концепция, которую я рассмотрю.
Этот вопрос, хотя и касается вопроса, можно ли уменьшить размер одного изображения снова.

1 Ответ

1 голос
/ 27 апреля 2020

Вы можете создать свой образ, используя многоэтапный Dockerfile.

Например:

FROM ubuntu:focal AS building_stage
RUN apt update && apt install -y curl
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
RUN yarn install # or whatever you want to do with yarn

FROM ubuntu:focal AS running_stage
COPY --from=building_stage /root/node_modules .

После создания этого Dockerfile, окончательное изображение не содержит ни yarn, ни curl, но в нем есть необходимые файлы для запуска вашего окончательного образа. Я не знал, что вы хотите сделать с yarn, поэтому я не смог показать чистый пример из вашего примера, но многоэтапные сборки , вероятно, вы хотите использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...