Как работает buildkit cache?

0
(0)

Есть такая штука в docker, называется buildkit и позволяет использовать так называемый mount=type=cache, как это выглядит и зачем нужно?

Включаем buildkit

Dockerfile
BUILDKIT_INLINE_CACHE=1

В Dockerfile добавляем что-то вроде:

Dockerfile
 RUN --mount=type=cache,target=/home/node/.cache/yarn/,id=yarn_cache,uid=10064,gid=10064 \
yarn install

Тут мы перед командой yarn install говорим докеру, создай директорию /home/node/.cache/yarn либо любую другую, где вы ожидаете увидеть кеш от какой-либо утилиты и во время сборки смонтируй ее в контейнер.

При это buildkit создаст структуру каталогов по пути /var/lib/docker/buildkit, с файликами вида *.db. Один из таких файлов — это metadata_v2.db.

В этом файле по указанному нами ранее id можно найти имя хеша, который будет лежать на ФС в /var/lib/docker/overlay2/<hash_name/diff. Справедливо если у вас именно overlay2.

Собственно в этой директории и хранится ваш кеш, которым будет управлять buildkit, гораздо более разумно перестраивая слои докера.

Собственно в DIND это работает абсолютно также, только все выше описанное происходит в билд контейнере. Тут важно шарить кеш.

Кеш этот лежит в рамках ноды, если у вас много раннеров, то полность кеш будет доступен только после билдов на всех нодах.

Насколько статья полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Оставить комментарий