Docker构建不使用缓存

时间:2017-08-29 00:35:19

标签: caching docker build

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"]

1 个答案:

答案 0 :(得分:27)

从您的Dockerfile中,如果您将行附加到Dockerfile,或更改正在构建的代码,那么只有一行可以缓存:

RUN mkdir /code

之后,执行:

COPY . /code

由于您更改了Dockerfile,.的内容已更改(Dockerfile是.的一部分),因此需要再次执行COPY,生成新图层。生成新图层后,每个后续图层都不再具有缓存,需要重建。

要改进缓存,请考虑将更少的行放在Dockerfile的顶部。这会使COPY . /code行留在文件的最后,因为它几乎每次都会改变。