容器化 DevOps 实战指南
1. 容器化交付的背景与优势
传统应用运行步骤繁琐复杂,通常包括:
1. 配置机器和相应的基础设施资源
2. 安装操作系统
3. 安装系统程序和应用依赖
4. 部署应用
5. 维护应用的运行状态
配置管理工具虽能减少交付过程中的工作量,但随着应用栈变得复杂多样,维护大量的配置基础变得困难。而且,更新已安装的软件包时,系统和应用包之间的依赖关系错综复杂,容易导致应用意外崩溃。此外,升级配置管理工具本身也是一项具有挑战性的任务。
为了解决这些问题,出现了使用预烘焙虚拟机镜像的不可变部署方式。这种方式在系统或应用包更新时,会构建完整的虚拟机镜像并进行部署。虽然它能降低一些复杂性,但运行虚拟机镜像的开销明显大于部署软件包。
容器则是满足部署需求的理想选择。容器可以在版本控制系统(VCS)中进行管理,并构建成二进制镜像,实现不可变部署。这使得开发者能够从实际资源中抽象出来,基础设施工程师也能避免陷入依赖地狱。此外,容器只需打包应用本身及其依赖库,镜像大小远小于虚拟机,分发成本更低,运行过程中几乎没有额外开销。容器具有轻量级、自包含和近乎不可变的特点,能明确划分应用和基础设施之间的责任。
不过,由于 Linux 容器共享同一内核,存在一定的安全风险。为解决这一问题,出现了一些新趋势,如让虚拟机的运行像操作系统容器一样简单高效(如基于 unikernel 的解决方案或 Kata 容器),或者在应用和主机内核之间插入中介层(如 gVisor)。
2. 容器入门
有许多成熟的容器引擎可供选择,如 Docker(https://www.
超级会员免费看
订阅专栏 解锁全文
1580

被折叠的 条评论
为什么被折叠?



