Docker локальный или удаленный кеш (--cache-from) - PullRequest
1 голос
/ 28 января 2020

Я пытаюсь оптимизировать хранение в моем реестре docker и получаю проблемы с использованием удаленного кэша.

Мой docker файл выглядит следующим образом:

FROM java:11-debian

LABEL maintainer="Me"
ENV LANG en_US.utf8

RUN addgroup --system --gid 51170 myusername

...

Если я собираю локально несколько раз, используется кеш.

Для конвейера Jenkins я всегда отмечаю свою последнюю сборку с последним и извлеките последний последний непосредственно перед сборкой текущего сообщения:

docker pull artifactory/image:latest
docker build -t artifactory/image --cache-from artifactory/image:latest .
docker tag artifactory/image artifactory/image:latest
docker push artifactory/image:latest

Вывод журнала выглядит следующим образом:

 ...
   ---> f6363f58bc32
 Step 2/18 : LABEL maintainer="Me"
   ---> Using cache
   ---> 54efd5e63c04
 Step 3/18 : ENV LANG en_US.utf8
   ---> Using cache
   ---> 6865c5539193
 Step 4/18 : RUN addgroup --system --gid 51170 myusername
  Removing intermediate container f8d05d2e5f16
   ---> af5202782abc
...

Почему RUN не кэшируется в случае удаленного кэша? В чем разница между локальным кешем и использованием --cache-from?

1 Ответ

0 голосов
/ 22 апреля 2020

Из https://docs.docker.com/engine/reference/commandline/build/#specifying -external-cache-sources

Чтобы использовать изображение в качестве источника кэша, метаданные кэша должны быть записаны в изображение при создании. Это можно сделать, установив --build-arg BUILDKIT_INLINE_CACHE=1 при построении изображения. После этого встроенный образ можно использовать в качестве источника кэша для последующих сборок.

Кроме того, для использования Docker BuildKit в вашей среде должен быть DOCKER_BUILDKIT=1. Самый простой способ -

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