您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

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

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

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

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

您将遇到将OS软件包,NPM软件包或Git存储库更新为较新版本(例如中的~2.3semverpackage.json)的情况,但是由于您未更新Dockerfile或未package.json更新,docker将继续使用缓存。

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

其他 2022/1/1 18:16:07 有577人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶