cache 机制注意事项

可以说,cache 机制很大程度上做到了镜像的复用,降低存储空间的同时,还大大缩短了构建时间。然而,不得不说的是,想要用好 cache 机制,那就必须了解利用 cache 机制时的一些注意事项。

1. ADD 命令与 COPY 命令:Dockerfile 没有发生任何改变,但是命令ADD run.sh / 中 Dockerfile 当前目录下的 run.sh 却发生了变化,从而将直接导致镜像层文件系统内容的更新,原则上不应该再使用 cache。那么,判断 ADD 命令或者 COPY 命令后紧接的文件是否发生变化,则成为是否延用 cache 的重要依据。Docker 采取的策略是:获取 Dockerfile 下内容(包括文件的部分 inode 信息),计算出一个唯一的 hash 值,若 hash 值未发生变化,则可以认为文件内容没有发生变化,可以使用 cache 机制;反之亦然。

2. RUN 命令存在外部依赖:一旦 RUN 命令存在外部依赖,如RUN apt-get update,那么随着时间的推移,基于同一个基础镜像,一年的 apt-get update 和一年后的 apt-get update, 由于软件源软件的更新,从而导致产生的镜像理论上应该不同。如果继续使用 cache 机制,将存在不满足用户需求的情况。Docker 一开始的设计既考虑了外部依赖的问题,用户可以使用参数 --no-cache 确保获取最新的外部依赖,命令为docker build --no-cache -t="my_new_image" .

3. 树状的镜像关系决定了,一次新镜像的成功构建将导致后续的 cache 机制全部失效:这一点很好理解,一旦产生一个新的镜像,同时意味着产生一个新的镜像 ID,而当前宿主机环境中肯定不会存在一个镜像,此镜像 ID 的父镜像 ID 是新产生镜像的ID。这也是为什么,书写 Dockerfile 时,应该将更多静态的安装、配置命令尽可能地放在 Dockerfile 的较前位置。

最新文章

  1. 掌握Thinkphp3.2.0----模版基础
  2. fc23升级fc24及字体问题解决
  3. CRM 2013 移动终端 介绍和PAD下载地址
  4. 新手选择使用 Linux 桌面的七个注意点
  5. git 检出
  6. Android 接收短信
  7. android studio 自动序列化类插件
  8. ☀【Zepto】touch events
  9. Foreman 企业级配置管理解决方案
  10. 前端发展态势 && 前端工作流程个人浅析
  11. URI记录
  12. SSM-SpringMVC-06:SpringMVC关于静态资源无法展示的问题
  13. Unity AssetBundle的生成、加载和热更新
  14. docker 在centos6 和centos7上的区别
  15. CentOS7系统 ansible自动化部署多台服务器部署
  16. CSS-图片占位的技巧
  17. Luogu P3239 [HNOI2015]亚瑟王
  18. 如何用javac 和java 编译运行整个Java工程
  19. ASP.NET MVC中设置跨域
  20. Spring Boot—08Jackson处理JSON

热门文章

  1. 【推导】【暴力】Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017) C. Five Dimensional Points
  2. 设计BBS
  3. Java学习笔记(7)
  4. 关于abstract class 和 interface
  5. CentOS 5/6安装后的必备设置(转)
  6. 最佳实践: 勿在 Servlet 中实现 SingleThreadModel
  7. subline text 工具快捷键说明
  8. 如何使用Less?
  9. 为什么控制台console.log一个值,总是会多一个undefined
  10. Koch 分形,海岸线,雪花