Concepts avancés

1. Cache Cache

Vous l’avez peut-être remarqué au cours des exercices précédents, Docker utilise de façon assez intensive un cache pour accélérer ses processus de build. Mais comment cela se passe-t-il ?

Il faut savoir que chaque instruction d’un Dockerfile génère un conteneur temporaire sur lequel votre instruction est exécutée, qui sert de base à l’instruction suivante. C’est pour cela que le type d’information suivant apparaît assez souvent lorsque vous lancez un build :

Step 1/6 : FROM mcr.microsoft.com/dotnet/core/sdk:3.1 
---> cef7866e800b 
Step 2/6 : WORKDIR testproject_mvc 
---> Running in 2a815b7e0465 
Removing intermediate container 2a815b7e0465 
---> 2bd5c1a09222 

Docker indique explicitement qu’il supprime le conteneur intermédiaire (dont l’ID est 2a815b7e0465 dans les lignes précédentes) et en créé un nouveau (ce qui est symbolisé par une flèche suivie d’un nouvel ID, 2bd5c1a09222 dans les lignes précédentes). Si on exécute ce build une seconde fois, Docker indique de façon claire qu’il utilise le cache :

Step 1/6 : FROM mcr.microsoft.com/dotnet/core/sdk:3.1 
---> cef7866e800b 
Step 2/6 : WORKDIR testproject_mvc 
---> Using cache 
---> 2bd5c1a09222 

On notera la similitude d’ID entre la dernière ligne de la première exécution...

Pour consulter la suite, découvrez le livre suivant :
couv_EIDOCDNET.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Principes et syntaxe
Suivant
Exercice