容器化 DevOps 全解析:从基础到实践
1. 容器化交付的优势与挑战
传统应用程序的运行过程通常包含以下步骤:
1. 配置机器及相应的基础设施资源
2. 安装操作系统
3. 安装系统程序和应用依赖
4. 部署应用程序
5. 维护应用程序的运行状态
这个过程不仅繁琐复杂,而且手动操作容易出错。配置管理工具虽能减少部分工作量,但随着应用程序堆栈变得复杂多样,维护大量配置代码变得困难,尤其是遗留配置中包含各种修补时。此外,更新已安装的软件包时,系统和应用程序包之间的依赖关系错综复杂且脆弱,升级无关软件包后导致某些应用程序意外崩溃的情况并不少见,而且升级配置管理工具本身也是一项具有挑战性的任务。
为了解决这些问题,出现了使用预烘焙虚拟机(VM)镜像进行不可变部署的方法。即对系统或应用程序包进行任何更新时,都会针对该更改构建完整的 VM 镜像并进行相应部署。这种方法虽然降低了部分复杂性,能在推出更改前进行测试,还能为无法共享相同环境的应用程序定制运行时,但使用 VM 镜像进行不可变部署成本较高,启动、分发和运行臃肿的 VM 镜像的开销明显大于部署软件包。
而容器则是满足部署需求的理想选择。容器的表现形式可以在版本控制系统(VCS)中进行管理,并构建成二进制大对象(blob)镜像,该镜像也可以进行不可变部署。这使得开发人员能够从实际资源中抽象出来,基础设施工程师能够避免陷入依赖困境。此外,由于只需打包应用程序本身及其依赖库,容器镜像的大小明显小于 VM 镜像,因此分发容器镜像比分发 VM 镜像更经济。而且,在容器内运行进程与在 Linux 主机上运行基本相同,几乎不会产生额外开销。总之,容器具有轻量级、自包含和几乎不可
超级会员免费看
订阅专栏 解锁全文
550

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



