docker build
n'utilise pas son cache.
docker build -f Dockerfile .
génère la même sortie que celle-ci:
docker build -f Dockerfile --no-cache .
Je modifie le Dockerfile, en ajoutant des commandes à la fin du fichier. Les couches précédentes doivent donc être mises en cache et valides.
J'ai beaucoup d'espace disque.
Des idées?
Docker version 17.06.1-ce, build 874a737
Dockerfile:
FROM registry:5000/base/python:xenial
RUN mkdir /code
COPY . /code
RUN apt-get update && \
apt-get install -y \
vim \
less
COPY /etc/foo /etc/foo
ENTRYPOINT ["/bin/bash"]
À partir de votre Dockerfile, si vous ajoutez des lignes à votre Dockerfile ou modifiez le code en cours de création, il n'y a qu'une seule ligne qui peut être mise en cache:
RUN mkdir /code
Après cela, vous effectuez:
COPY . /code
Puisque vous avez modifié votre Dockerfile, le contenu de .
ont changé (le Dockerfile fait partie de .
) et donc le COPY
doit être exécuté à nouveau, générant une nouvelle couche. Une fois que vous avez généré une nouvelle couche, chaque couche suivante n'a plus de cache et doit être reconstruite.
Pour améliorer la mise en cache, pensez à placer les lignes qui changent moins vers le haut de votre Dockerfile. Cela laisserait le COPY . /code
ligne à la toute fin du fichier car il changera presque à chaque fois.