Caché de registro (registry)
El almacenamiento de caché registry se puede considerar como una extensión de la caché inline. A diferencia de la caché inline, la caché registry es completamente independiente de la imagen, lo que te permite un uso más flexible: la caché respaldada por registry puede hacer todo lo que hace la caché inline, y más:
- Te permite separar la caché y los artefactos de imagen resultantes para que puedas distribuir tu imagen final sin la caché en su interior.
- Puede almacenar en caché de manera eficiente compilaciones multi-etapa (multi-stage) en el modo
max, en lugar de solo la etapa final. - Funciona con otros exportadores para mayor flexibilidad, en lugar de solo con el exportador
image.
Este backend de almacenamiento de caché no es compatible con el controlador docker predeterminado. Para usar esta función, crea un nuevo constructor (builder) usando un controlador diferente. Consulta
Controladores de compilación para obtener más información.
Sinopsis
A diferencia de la caché inline que es más simple, la caché registry admite varios parámetros de configuración:
$ docker buildx build --push -t <registry>/<image> \
--cache-to type=registry,ref=<registry>/<cache-image>[,parameters...] \
--cache-from type=registry,ref=<registry>/<cache-image> .
La siguiente tabla describe los parámetros CSV disponibles que puedes pasar a --cache-to y --cache-from.
| Nombre | Opción | Tipo | Predeterminado | Descripción |
|---|---|---|---|---|
ref | cache-to,cache-from | String | Nombre completo de la imagen de caché a importar. | |
mode | cache-to | min,max | min | Capas de caché a exportar, consulta modo de caché. |
oci-mediatypes | cache-to | true,false | true | Usar tipos de medio OCI en los manifiestos exportados, consulta tipos de medio OCI. |
image-manifest | cache-to | true,false | true | Al usar tipos de medio OCI, generar un manifiesto de imagen en lugar de un índice de imagen para la imagen de caché, consulta tipos de medio OCI. |
compression | cache-to | gzip,estargz,zstd | gzip | Tipo de compresión, consulta compresión de caché. |
compression-level | cache-to | 0..22 | Nivel de compresión, consulta compresión de caché. | |
force-compression | cache-to | true,false | false | Forzar la aplicación de compresión, consulta compresión de caché. |
ignore-error | cache-to | Boolean | false | Ignorar los errores causados por exportaciones de caché fallidas. |
Puedes elegir cualquier valor válido para ref, siempre que no sea el mismo que la ubicación de destino a la que envías tu imagen. Podrías elegir diferentes etiquetas (por ejemplo, foo/bar:latest y foo/bar:build-cache), nombres de imagen separados (por ejemplo, foo/bar y foo/bar-cache) o incluso registros diferentes (por ejemplo, docker.io/foo/bar y ghcr.io/foo/bar). Depende de ti decidir la estrategia que quieres usar para separar tu imagen de tus imágenes de caché.
Si el destino de --cache-from no existe, el paso de importación de caché fallará, pero la compilación continuará.
Lecturas adicionales
Para una introducción al almacenamiento en caché, consulta Caché de compilación de Docker.
Para obtener más información sobre el backend de caché registry, consulta el README de BuildKit.