云原生正在吞并软件世界,容器改变了传统的应用开发模式,如今研发人员不仅要构建应用,还要使用 Dockerfile 来完成应用的容器化,将应用及其依赖关系打包,从而获得更可靠的产品,提高研发效率。随着项目的迭代,达到一定的规模后,就需要运维团队和研发团队之间相互协作。运维团队的视角与研发团队不同,他们对镜像的需求是安全和标准化。比如:
不同的应用应该选择哪种基础镜像?
应用的依赖有哪些版本?
应用需要暴露的端口有哪些?
为了优化运维效率,提高应用安全性,研发人员需要不断更新 Dockerfile 来实现上述目标。同时运维团队也会干预镜像的构建,如果基础镜像中有 CVE 被修复了,运维团队就需要更新 Dockerfile,使用较新版本的基础镜像。总之,运维与研发都需要干预 Dockerfile,无法实现解耦。为了解决这一系列的问题,涌现出了更加优秀的产品来构建镜像,其中就包括 Cloud Native Buildpacks (СNB)。CNB
基于模块化提供了一种更加快速、安全、可靠的方式来构建符合 OCI
规范的镜像,实现了研发与运维团队之间的解耦。
如今,容器运行时早就不是 Docker
一家独大了。为了确保所有的容器运行时都能运行任何构建工具生成的镜像,Linux 基金会与 Google,华为,惠普,IBM,Docker,