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

Cache de construction Docker

Lorsque vous construisez la même image Docker plusieurs fois, savoir comment optimiser le cache de construction est un excellent outil pour vous assurer que les constructions s'exécutent rapidement.

Comment fonctionne le cache de construction

Comprendre le cache de construction de Docker vous aide à écrire de meilleurs Dockerfiles qui se traduisent par des constructions plus rapides.

L'exemple suivant montre un petit Dockerfile pour un programme écrit en C.

# syntax=docker/dockerfile:1
FROM ubuntu:latest

RUN apt-get update && apt-get install -y build-essentials
COPY main.c Makefile /src/
WORKDIR /src/
RUN make build

Chaque instruction de ce Dockerfile se traduit par une couche dans votre image finale. Vous pouvez considérer les couches d'image comme une pile, chaque couche ajoutant plus de contenu par-dessus les couches qui la précèdent :

Diagramme des couches d'image

Chaque fois qu'une couche change, cette couche devra être reconstruite. Par exemple, supposons que vous apportiez une modification à votre programme dans le fichier main.c. Après cette modification, la commande COPY devra s'exécuter à nouveau pour que ces modifications apparaissent dans l'image. En d'autres termes, Docker invalidera le cache pour cette couche.

Si une couche change, toutes les autres couches qui la suivent sont également affectées. Lorsque la couche avec la commande COPY est invalidée, toutes les couches qui suivent devront également s'exécuter à nouveau :

Diagramme des couches d'image, montrant l'invalidation du cache

Et c'est le cache de construction Docker en quelques mots. Une fois qu'une couche change, toutes les couches en aval doivent également être reconstruites. Même si elles ne construiraient rien de différent, elles doivent quand même être réexécutées.

Autres ressources

Pour plus d'informations sur l'utilisation du cache pour effectuer des constructions efficaces, voir :