Реестр

Кэш-память registry можно рассматривать как расширение кэша inline. В отличие от кэша inline, кэш registry полностью отделён от образа, что позволяет использовать его более гибко — кэш с поддержкой registry может делать все то же, что и встроенный кэш, и даже больше:

  • Позволяет разделить кэш и артефакты результирующего образа, чтобы вы могли распространять конечное образ без кэша внутри.

  • Он может эффективно кэшировать многоэтапные сборки в режиме max, а не только последний этап.

  • Он работает с другими экспортерами для большей гибкости, а не только с экспортером image.

    Примечание

    Данный бэкэнд для хранения кэша требует использования драйвера, отличного от драйвера по умолчанию docker — см. дополнительную информацию о выборе драйвера здесь. Чтобы создать новый драйвер (который можно использовать в качестве простой замены):

    $ docker buildx create --use --driver=docker-container
    

Синопсис

В отличие от более простого кэша inline, кэш registry поддерживает несколько параметров конфигурации:

$ docker buildx build --push -t <registry>/<image> \
  --cache-to type=registry,ref=<registry>/<cache-image>[,parameters...] \
  --cache-from type=registry,ref=<registry>/<cache-image> .

В следующей таблице рассмотрены доступные параметры CSV, которые можно передать в --cache-to и --cache-from.

Имя

Опция

Тип

По умолчанию

Описание

ref

cache-to, cache-from

Строка

Полное имя импортируемого образа кэша.

dest

cache-to

Строка

Путь к локальной директории, в которую экспортируется кэш.

mode

cache-to

min, max

min

Слои кэша для экспорта, см. режим кэша.

oci-mediatypes

cache-to

true, false

true

Используйте медиатипы OCI в экспортируемых манифестах, смотрите OCI медиатипы.

compression

cache-to

gzip, estargz, zstd

gzip

Тип сжатия, см. компрессию кэша.

compression-level

cache-to

0..22

Уровень сжатия, см. компрессию кэша.

force-compression

cache-to

true, false

false

Принудительное применение сжатия, см. раздел компрессию кэша.

Вы можете выбрать любое допустимое значение для ref, если оно не совпадает с целевым местоположением, в которое вы помещаете образ. Вы можете выбрать разные теги (например, foo/bar:latest и foo/bar:build-cache), отдельные имена образов (например, foo/bar и foo/bar-cache) или даже разные хранилища (например, docker.io/foo/bar и ghcr.io/foo/bar). Вы сами решаете, какую стратегию использовать для отделения своего образа от образов из кэша.

Если цель --cache-from не существует, то шаг импорта кэша будет провален, но сборка продолжится.

Дальнейшее чтение

Введение в кэширование см. в разделе Оптимизация сборки с помощью кэша.

Дополнительные сведения о серверной части кэша registry см. в статье BuildKit README.