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/

10-16 20:07