Кеш пакетов в Docker
Кеш пакетов держит скачанные
архивы между сборками
и не кладёт эту папку
в слой образа.
Повторный apk add
может взять файлы из кеша,
а не качать их снова.
Основа - alpine.
На шаге RUN монтируют
каталог кеша и ставят
curl.
Рецепт для образа fetcher:
FROM alpine
RUN --mount=type=cache,target=/var/cache/apk apk add curl
CMD ["curl", "--version"]
После сборки с меткой
-t fetcher . в образе
есть установленный curl,
а не содержимое /var/cache/apk
из монтирования.
Первая сборка и запуск;
повторная с тем же рецептом
берёт архивы из этой папки
кеша, если шаг снова выполняется,
а в готовой метке остаётся
программа, а не сами архивы:
docker build -t fetcher .
docker run --rm fetcher
Соберите образ wget-box с установкой wget через менеджер пакетов и монтированием каталога кеша на шаге установки.
Выполните две сборки подряд и отметите в журнале, что второй раз загрузка архивов короче или помечена как взятая из кеша.