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"]
答案 0 :(得分:27)
从您的Dockerfile中,如果您将行附加到Dockerfile,或更改正在构建的代码,那么只有一行可以缓存:
RUN mkdir /code
之后,执行:
COPY . /code
由于您更改了Dockerfile,.
的内容已更改(Dockerfile是.
的一部分),因此需要再次执行COPY
,生成新图层。生成新图层后,每个后续图层都不再具有缓存,需要重建。
要改进缓存,请考虑将更少的行放在Dockerfile的顶部。这会使COPY . /code
行留在文件的最后,因为它几乎每次都会改变。