⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

Cache local

Le stockage de cache local est une option de cache simple qui stocke votre cache sous forme de fichiers dans un répertoire sur votre système de fichiers, en utilisant une disposition d'image OCI pour la structure de répertoire sous-jacente. Le cache local est un bon choix si vous faites simplement des tests, ou si vous voulez la flexibilité de gérer vous-même une solution de stockage partagée.

Synopsis

$ 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 .

Le tableau suivant décrit les paramètres CSV disponibles que vous pouvez passer à --cache-to et --cache-from.

Nom Option Type Par défaut Description
src cache-from Chaîne Chemin du répertoire local d'où le cache est importé.
digest cache-from Chaîne Digest du manifeste à importer, voir versionnement du cache.
dest cache-to Chaîne Chemin du répertoire local où le cache est exporté.
mode cache-to min,max min Couches de cache à exporter, voir mode de cache.
oci-mediatypes cache-to true,false true Utiliser les types de média OCI dans les manifestes exportés, voir types de média OCI.
image-manifest cache-to true,false true Lors de l'utilisation des types de média OCI, générer un manifeste d'image au lieu d'un index d'image pour l'image de cache, voir types de média OCI.
compression cache-to gzip,estargz,zstd gzip Type de compression, voir compression de cache.
compression-level cache-to 0..22 Niveau de compression, voir compression de cache.
force-compression cache-to true,false false Appliquer la compression de force, voir compression de cache.
ignore-error cache-to Booléen false Ignorer les erreurs causées par les exportations de cache échouées.

Si le cache src n'existe pas, alors l'étape d'importation du cache échouera, mais la construction continue.

Versionnement du cache

Cette section décrit comment fonctionne le versionnement pour les caches sur un système de fichiers local, et comment vous pouvez utiliser le paramètre digest pour utiliser des versions plus anciennes du cache.

Si vous inspectez manuellement le répertoire de cache, vous pouvez voir la disposition d'image OCI résultante :

$ 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"
      }
    }
  ]
}

Comme les autres types de cache, le cache local est remplacé lors de l'exportation, en remplaçant le contenu du fichier index.json. Cependant, les caches précédents seront toujours disponibles dans le répertoire blobs. Ces anciens caches sont adressables par digest, et conservés indéfiniment. Par conséquent, la taille du cache local continuera à croître (voir moby/buildkit#1896 pour plus d'informations).

Lors de l'importation du cache à l'aide de --cache-from, vous pouvez spécifier le paramètre digest pour forcer le chargement d'une version plus ancienne du cache, par exemple :

$ 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 .

Pour aller plus loin

Pour une introduction à la mise en cache, voir Cache de construction Docker.

Pour plus d'informations sur le backend de cache local, voir le README de BuildKit.