互联网技术 / 互联网资讯 · 2024年1月11日

云计算核心技术Docker教程:构建缓存的 Docker 利用

构建映像时,Docker 会逐步执行中的说明,并按照指定的顺序执行每个说明。在检查每条指令时,Docker 会在其缓存中查找可以重用的现有映像,而不是创建新的映像。

云计算核心技术Docker教程:Docker 利用构建缓存

如果您根本不想使用缓存,则可以使用命令–no-cache=true 上的选项docker build。但是,如果您确实让 Docker 使用其缓存,那么了解它什么时候可以,什么时候不能找到匹配的图像很重要。Docker 遵循的基本规则概述如下:

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

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

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

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

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

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.

登录免费注册