AWS发布为容器应用程序打造的操作系统Bottlerocket

AWS推出专门为容器主机优化的Linux操作系统Bottlerocket,包含容器主机所需要的组件,并且集成了现有容器调度工具,支持Docker镜像文件以及OCI(Open Container Initiative)格式的镜像文件。

不少企业以容器打包应用程序,让各种应用程序在不同的计算基础设施中运行,且不需要变更其底层程序代码,AWS提到,以容器打包和扩展应用程序,已经是公认在云计算执行应用程序的首选方法,因为以容器为基础的环境,能使得应用程序扩展变得简单,客户可以在主机环境执行数百甚至是数千个执行实例。

不过,不少应用程序容器所使用的主机操作系统,皆非为托管容器设计,因此这也出现了一些挑战,大多数的系统都是以组件为单位更新,这在安全性、更新、额外资源支出以及系统偏移上,都会出现问题,也使得自动化成为一项困难的工作。

AWS认为,这些挑战主要来自于组件系统,除了简单地安装额外的组件来满足依赖性,会增加可攻击面之外,传统依赖组件的更新系统,机制过于复杂容易产生错误,且相依项目也容易出现问题,而且多余的组件会占用磁盘空间和CPU计算资源,增加启动的时间,另外,不一致的组件和配置,也会因为时间发展,破坏集群的完整性。

为此,AWS推出了自家的操作系统Bottlerocket,试图解决这些问题。Bottlerocket由标准开源组件构建而成,具备执行容器所有需要的组件,AWS强调,Bottlerocket特别之处在于其更新以及API设计上,用户可以便用调用API来调整配置,而不需要手动更改,并且这些更改还可以在更新时自动搬迁。

Bottlerocket不使用组件更新系统,而是使用基于镜像文件的更新模型,这个模型在必要时可以快速且完整的回退,AWS表示,这消除了系统冲突和故障的机会,并使得调度工具可以更有心信地将更新应用到整个集群。而且Bottlerocket中几乎所有的地方组件,都是以Rust开发而成,而Rust能够消除某些类型的内存安全性问题,并且使开发者以较安全的模式开发程序。

Bottlerocket的文件系统主要为只读,并在启动时经dm-verity检查其完整性,AWS提到,并不建议用户使用SSH访问,SSH访问仅在独立管理者容器中提供,用户可以根据需要激活管理者容器,用来排除故障。