# 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](/build/builders/drivers/) 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:

```console
$ 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é][1].                                                                                                |
| `oci-mediatypes`    | `cache-to`              | `true`,`false`          | `true`         | Usar tipos de medio OCI en los manifiestos exportados, consulta [tipos de medio OCI][2].                                                               |
| `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][2]. |
| `compression`       | `cache-to`              | `gzip`,`estargz`,`zstd` | `gzip`         | Tipo de compresión, consulta [compresión de caché][3].                                                                                                 |
| `compression-level` | `cache-to`              | `0..22`                 |                | Nivel de compresión, consulta [compresión de caché][3].                                                                                                |
| `force-compression` | `cache-to`              | `true`,`false`          | `false`        | Forzar la aplicación de compresión, consulta [compresión de caché][3].                                                                                 |
| `ignore-error`      | `cache-to`              | Boolean                 | `false`        | Ignorar los errores causados por exportaciones de caché fallidas.                                                                                      |

[1]: /build/cache/backends/#modo-de-cache
[2]: /build/cache/backends/#tipos-de-medio-oci
[3]: /build/cache/backends/#compresion-de-cache

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](/build/backends/).

Para obtener más información sobre el backend de caché `registry`, consulta el [README de BuildKit](https://github.com/moby/buildkit#registry-push-image-and-cache-separately).

