如何查看哪个文件导致Dockerfile`COPY`语句使缓存无效?
码头工人建造.将在给定当前目录中的Dockerfile的情况下重建docker镜像,并忽略与.dockerignore文件匹配的任何路径. 如果磁盘上的文件与上次构建的文件不同,则该Dockerfile中的任何COPY语句都将导致构建缓存失效. 我注意到如果你不忽略.git目录,像git fetch这样简单的东西没有副作用会导致构建缓存失效(可能是因为.git目录中的一些跟踪信息已经改变了). 如果我知道如何准确地查看哪些文件导致缓存失效,那将非常有用……但我一直无法找到方法. 我认为没有办法看到哪个文件使用当前的Docker image design使缓存失效.
图层和图像since v1.10 are ‘content addressable’.它们的ID基于SHA256校验和,反映了它们的内容. caching code只查找图像/图层的ID,如果整个图层的内容匹配(或可能是碰撞),它将仅存在于Docker Engine中. 因此,当您运行docker build时,会为Dockerfile中的每个命令创建一个新的构建上下文.计算命令将生成的整个层的校验和.然后,docker会检查现有图层是否可用该校验和并运行config. 我可以看到获取单个文件详细信息的唯一方法是重新计算目标文件校验和,这可能会抵消大部分缓存加速.如果你确实想要这样做,另一个问题是决定检查哪一层.您必须查找以前的图像构建树(可能通过标记?)来查找先前可比较图层的内容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |