知识卡片
镜像分层按变更频率排序
内容
镜像的分层结构让构建和分发都能吃到缓存的红利:每一层都是相对上一层的增量,Docker 会缓存所有层,某一层没变就不用重新构建,从仓库拉镜像时也只需要下载变化了的层。这个特性带来一条实用的排列原则——Dockerfile 里的指令应该按”多久会变一次”从低到高排:越稳定的东西(操作系统、运行时)放在越底层,越容易频繁变化的东西(自己的应用代码)放在最上层。反过来排的话,改一行业务代码就会导致上面所有层全部失效重建,缓存形同虚设。发散:这条原则的本质和分层架构设计是同一个思路——把变化频率相近的东西放在一起,让”改动的影响半径”尽量小,Dockerfile 里体现为构建缓存的命中率,代码架构里体现为改一个模块要牵连改多少其他模块。
参考来源
《Cloud Native Spring in Action》第6章《Containerizing Spring Boot》