Docker以后将是什么?无核Unikernels和不可变的底层

14-11-15 banq
              

这是darrenrush的一篇预测Devops业界在Docker以后下一步是什么?大意翻译如下:

我相信Docker已经推动DevOps世界向前走了两步,它提倡的原理思维是具有超前性的,它的目标是构造一个更安全,高性能,易管理的云计算未来。另外一条路径是在无核unikernel与不可变服务器immutable server之间的权衡将导致更小 更易于管理 更安全的容器诞生,它们将简化现在企业的旧有技术。

下一个云

当DevOps成熟以后,云应用的部署和管理缺陷越来越明显,虚拟机image膨胀,大大增加受攻击机会attack surface,遗留旧的可执行文件,基于OS的碎片化以及开发与IT运维之间职责不清晰等等已经开始引起很多问题,这些对于将来技术发展是一种机遇。

一个例子可以很好说明这个问题,创建一个Ruby或Python的Web服务器虚拟机image文件不可能不包含构建工具如gcc ssh和多个潜在的shell可执行文件。

所有这些组件对于生产系统都是不利的,因为增加了image文件大小,增加了受攻击的面积(attack surface),增加了维护负担。

特别是对于Docker有如下几个问题:

1. 核心OS的碎片化: 你的Docker Image应该基于Centos, Debian, Ubuntu?你的应用的Docker是基于选择哪个OS呢?你的团队做好了准备需要维护多个操作系统版本的image吗?

2.Image文件变大: Docker image文件变得很巨大,大得很难在远程连接之间很快地传送image文件,使用更小的linux(TinyCore NixOS)是一个办法,构建定制的Image也在Docker社区进行初期的实践。

3. 还是不安全: 在公共仓储中几乎所有流行的Docker Image都有二进制可执行文件,从Bash到python脚本,通过一些安全漏洞总会能被启动执行。

你可能说,等等,CoreOS是为Docker优化定制的最小OS,实际上,CoreOS是一个设计用来编排和管理Docker实例的,并不是倾向于被用作一个Docker容器的image,而且CoreOS是基于Gentoo Linux的,但是Docker image推荐的是Debian,这就会让人混乱。

不可变服务器和无核化

不可变服务器是一种部署模型,指的是在生产环境没有应用升级 安全补丁 和配置改变等等,如果这些层次中任何一项改变,一个新的image就需要重新构建,再发布到生产环节。Heroku是当前不可变服务器的一个案例,你的应用每次改变都需要一个git push来覆盖过去的版本,这样做的好处是能保证对生产环境代码的更高信心,包括集成测试 部署流程 等等都有可靠保证。

一旦你相信不可变服务器的概念,你的部署速度会提高,漏洞概率会变小,Docker容器推荐一个容器一个服务single-service-per-container (microservices)的概念,而无核化Unikernel则会将这个想法带得更远。

无核化Unikernel允许你将所有包括操作系统都考虑到你的应用程序的编译和打包中,比如,如果你应用不需要持久磁盘的访问,那么设备驱动程序和OS有关磁盘使用的工具就可以不包含在生产Imag中,因为unikernels 是为运行Xen等虚拟管理程序而设计的,它们只需要网络和磁盘的一些标准资源的接口,用于显示的数千个设备驱动 磁盘驱动等等都是不需要的。由此,生产系统变得最小化,只是需要应用代码 运行环境和应用必须的OS工具等等必备的,VM image文件变得更小,部署变得更快,更加易于维护。

传统操作系统如Linux Windows将在服务器端绝种,它们被单个用户 针对硬件优化的 多用户和无关硬件的应用替代了。

基于这些技术的更加易于构建部署和管理的工具包将会出现,未来主机市场和企业云市场的游戏将开始改变。

参考:

使用Mesos和Marathon管理Docker集群

什么是devops

[该贴被banq于2014-11-17 07:18修改过]

              

1