docker build
没有使用它的缓存。
docker build -f Dockerfile .
生成与此相同的输出:
docker build -f Dockerfile --no-cache .
我正在修改Dockerfile,在文件末尾添加命令。因此,先前的层应该被缓存并且有效。
我有足够的磁盘空间。
有任何想法吗?
Docker版本17.06.1-ce,内部版本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"]
最佳答案
在Dockerfile中,如果将行添加到Dockerfile或更改正在构建的代码,则仅可缓存一行:
RUN mkdir /code
之后,您将执行以下操作:
COPY . /code
由于您已更改Dockerfile,因此
.
的内容也已更改(Dockerfile是.
的一部分),因此需要再次执行COPY
,以生成新层。生成新层后,随后的每个层都不再具有缓存,需要重新构建。为了改善缓存,请考虑将变化不大的行放在Dockerfile的顶部。这将把
COPY . /code
行留在文件的最后,因为它几乎每次都会更改。关于caching - Docker构建未使用缓存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45929081/