之前的apt-get更新和安装在每次构建期间删除了Docker层

问题描述 投票:-2回答:1

我有一个包含以下内容的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能够缓存该层并在将来再次使用它。

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

谢谢。

linux ubuntu docker dockerfile apt-get
1个回答
0
投票

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

对于ADD和COPY指令,将检查映像中文件的内容,并为每个文件计算校验和。在这些校验和中不考虑文件的最后修改时间和最后访问时间。在高速缓存查找期间,将校验和与现有映像中的校验和进行比较。如果文件中的任何内容(例如内容和元数据)发生了任何更改,则缓存将失效。

缓存无效后,所有后续Dockerfile命令都将生成新映像,并且不会使用缓存。

© www.soinside.com 2019 - 2024. All rights reserved.