# Caché local


El almacenamiento de caché `local` es una opción de caché simple que almacena tu caché como archivos en un directorio de tu sistema de archivos, utilizando un [diseño de imagen OCI (OCI image layout)](https://github.com/opencontainers/image-spec/blob/main/image-layout.md) para la estructura de directorios subyacente. La caché local es una buena opción si solo estás haciendo pruebas o si quieres la flexibilidad de gestionar tú mismo una solución de almacenamiento compartido.

## Sinopsis

```console
$ docker buildx build --push -t <registry>/<image> \
  --cache-to type=local,dest=path/to/local/dir[,parameters...] \
  --cache-from type=local,src=path/to/local/dir .
```

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                                                                                                                                            |
| ------------------- | ------------ | ----------------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `src`               | `cache-from` | String                  |                | Ruta del directorio local desde donde se importa la caché.                                                                                             |
| `digest`            | `cache-from` | String                  |                | Hash (digest) del manifiesto a importar, consulta [versionado de caché][4].                                                                            |
| `dest`              | `cache-to`   | String                  |                | Ruta del directorio local al que se exporta la caché.                                                                                                  |
| `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
[4]: #versionado-de-cache

If the `src` cache doesn't exist, then the cache import step will fail, but the build continues.

## Versionado de caché

<!-- FIXME: update once https://github.com/moby/buildkit/pull/3111 is released -->

Esta sección describe cómo funciona el versionado para las cachés en un sistema de archivos local y cómo puedes usar el parámetro `digest` para utilizar versiones anteriores de la caché.

Si inspeccionas el directorio de caché manualmente, puedes ver el diseño de imagen OCI resultante:

```console
$ ls cache
blobs  index.json  ingest
$ cat cache/index.json | jq
{
  "schemaVersion": 2,
  "manifests": [
    {
      "mediaType": "application/vnd.oci.image.index.v1+json",
      "digest": "sha256:6982c70595cb91769f61cd1e064cf5f41d5357387bab6b18c0164c5f98c1f707",
      "size": 1560,
      "annotations": {
        "org.opencontainers.image.ref.name": "latest"
      }
    }
  ]
}
```

Al igual que otros tipos de caché, la caché local se reemplaza al exportar, al sustituir el contenido del archivo `index.json`. Sin embargo, las cachés anteriores seguirán estando disponibles en el directorio `blobs`. Estas cachés antiguas se pueden direccionar por digest y se conservan indefinidamente. Por lo tanto, el tamaño de la caché local seguirá creciendo (consulta [`moby/buildkit#1896`](https://github.com/moby/buildkit/issues/1896) para obtener más información).

Al importar caché usando `--cache-from`, puedes especificar el parámetro `digest` para forzar la carga de una versión anterior de la caché, por ejemplo:

```console
$ docker buildx build --push -t <registry>/<image> \
  --cache-to type=local,dest=path/to/local/dir \
  --cache-from type=local,ref=path/to/local/dir,digest=sha256:6982c70595cb91769f61cd1e064cf5f41d5357387bab6b18c0164c5f98c1f707 .
```

## 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é `local`, consulta el [README de BuildKit](https://github.com/moby/buildkit#local-directory-1).

