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) 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
$ 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é. | |
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é. |
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. |
If the src cache doesn't exist, then the cache import step will fail, but the build continues.
Versionado de caché
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:
$ 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 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:
$ 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.
Para obtener más información sobre el backend de caché local, consulta el README de BuildKit.