基础设施、云与 DevOps · 综合
容器:它带来什么,什么时候多余
一句话: 容器把应用和它运行所需的一切打包在一起,让它在任何地方行为都一样。
它解决什么问题
让不同机器上的版本和依赖保持一致。不用在每台服务器上安装配置,而是构建一个镜像,到处运行。扩容的便利也由此而来:多跑一个实例是几秒钟的事。
怎么构建一个好镜像
精简且最新的基础镜像、多阶段构建以免构建工具进入最终镜像、一个不具备完整权限的用户,以及明确的版本标签——而不只是「latest」。
不要把密钥放进镜像。它们在运行时注入。
什么时候不需要
一个静态站点、一个小函数,或者跑在自己就处理这些事的托管平台上的系统。容器增加了一层要维护的东西;如果你从中得不到可移植性或一致性,那就跳过。
深入一层
在构建流程中扫描镜像漏洞,并且即便没有代码变更也按固定周期重建——大多数漏洞来自基础层。并且定一套清晰的标签策略,这样你永远能说出现在跑的到底是哪个版本。