栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Docker如何知道在构建期间何时使用缓存,何时不使用缓存?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker如何知道在构建期间何时使用缓存,何时不使用缓存?

在Dockerfile最佳实践构建缓存部分中相当详尽地解释了构建缓存过程。

*从缓存中已存在的基本映像开始,将下一条指令与从该基本映像派生的所有子映像进行比较,以查看是否其中一个是使用完全相同的指令构建的。如果不是,则高速缓存无效。

  • 在大多数情况下,只需将中的指令
    Dockerfile
    与子图像之一进行比较就足够了。但是,某些说明需要更多检查和解释。

*对于

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

  • 除了
    ADD
    COPY
    命令外,缓存检查不会查看容器中的文件来确定缓存是否匹配。例如,在处理
    RUN apt-get -yupdate
    命令时,将不检查容器中更新的文件以确定是否存在缓存命中。在这种情况下,仅命令字符串本身将用于查找匹配项。

一旦缓存无效,所有后续

Dockerfile
命令将生成新映像,并且将不使用缓存。

您将遇到将OS软件包,NPM软件包或Git存储库更新为较新版本(例如中的

~2.3
semver
package.json
)的情况,但是由于您未更新
Dockerfile
或未
package.json
更新,docker将继续使用缓存。

Dockerfile
通过修改某些更智能的检查(例如,从回购中检索最新的git分支shasum以便在克隆指令中使用),可以以编程方式生成破坏缓存的a。您也可以定期运行构建
--no-cache=true
以强制执行更新。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/426480.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号