以前的apt-get update&在每次构建期间安装Docker图层

时间:2017-12-30 00:14:55

标签: linux ubuntu docker dockerfile apt-get

我有一个包含以下内容的Dockerfile:

FROM ubuntu:17.10
WORKDIR /app
ADD . /app
RUN apt-get update && apt-get install -y \
python3-pip \
python3-numpy \
ffmpeg \
python3.6 \
xz-utils
...

每次运行RUN时,都会删除在docker build语句中创建的图层,但我不确定为什么会出现这种情况。安装所有依赖项需要很长时间,所以我希望Docker能够缓存该层并在将来再次使用它。

我该怎么做才能获得这种行为?

谢谢。

1 个答案:

答案 0 :(得分:0)

根据documentation,如果一个图层的缓存无效,则需要重新构建后续图层。因此,在Dockerfile中首先使用所有静态步骤是最佳做法(例如,在您的情况下,您可以移动RUN apt-get ...命令)。希望清楚

  

对于ADD和COPY指令,文件的内容在   检查图像并计算每个文件的校验和。该   文件的最后修改时间和上次访问时间不是   在这些校验和中考虑。在缓存查找期间,校验和   与现有图像中的校验和进行比较。如果有什么   已更改文件,如内容和元数据,然后   缓存无效。

     

一旦缓存失效,所有后续的Dockerfile命令都会   生成新图像,不会使用缓存。