投稿|这群程序员为何坚持30年“免费”写代码?( 四 )


但Docker一口气从源头上解决了这一问题 。它用了一个容器,把代码、运行环境、系统工具、系统库、设置包了进去,像一个罐子一样,拿着这个罐子,程序在任何操作系统都能畅通地运行 。
当时Docker喊出了一句口号:“Build once,RunAnyWhere 。”完全无视开发、测试、生产环境不一致的干扰 。
程序写完之后打包成镜像,就可以随处部署和运行 。这对当时总要考虑运行环境、总要修bug的程序员来说,实在是天大的诱惑 。
毫无疑问,Docker技术在当时的代码圈和程序圈非常轰动,而王旭瞄准了这个机会 。
同样是2010年代,随着互联网的发展,大量的程序都在往云上走 。当大家都在尝试在云上部署应用,为云开发代码时,一个无视运行环境影响,直接能让软件运行的容器化环境,无疑能让软件开发如虎添翼 。
如果容器化与云结合起来,那么后来的应用开发者和使用者,就不用再思考从集群硬件管理到维护操作系统环境这一系列的烦心事,他们只需要确定需要什么服务,如何定义应用,就可以了 。
所有应用底层抽象的事情被全部剥离了出来,变成了花园底层适合所有植被生长的土壤,后来者不用再考虑土壤问题,只需要考虑想要什么花、什么树,就能直接种下去,这就是所谓“云原生”的原始动机 。
虽然这在未来必然是一个趋势,但容器化和云要完美结合,天然会产生一个矛盾:容器这个技术的安全隔离性不够,和云的结合需要大量的额外保障,来破坏这之中的简洁之美 。
传统的操作系统容器技术的隔离指的是管理上的隔离,并不是指它运行起来就互相不干扰、没有安全风险,相反,因为同一个操作系统上的容器之间共享了很多状态,安全风险是很难消除的 。
而云上又特别讲究用户之间的隔离性,它会假设每个人都是陌生人,不同的用户之间要隔离住,要互相不能侵犯,同时互相之间的干扰也要尽可能小 。
它既是趋势,又因隔离性而面临困难,王旭他们因此想到,可以做一个软件增强容器的安全隔离性,做一个「安全容器」 。
但实际上,要增强操作系统容器的安全性是比较困难的,学界也有一些研究证明容器和安全之间有不易解决的死结存在 。
当然正如David Wheeler所说,“在计算机科学中,所有问题都可以通过增加一个间接层来解决”,容器安全性也不例外 。
但David Wheeler也说,“这解决不了间接层过多的问题”,多增加一个间接层会带来复杂,不仅影响美感,也带来滋生Bug的土壤 。
后来,王旭他们想到了主流云主机里都会使用、早已被证明安全的虚拟机技术,于是反向思考能否将虚拟机技术剪裁到容器这种轻量快速结构,并基于这个思路推出了runV 。
投稿|这群程序员为何坚持30年“免费”写代码?
文章图片

图 | 王旭和Kata Containers团队
这和英特尔的clear containers是同一个思路,二者用完全不同的代码实现了同一种方式解决容器上云的安全问题,两个项目的发布时间同是2015年5月 。
2017年9月,王旭他们团队和Intel开源技术中心共同决定,将这两个容器合并,并放入OSF基金会进行管理 。
2017年12月,Kata Containers项目正式发布,并成为OSF基金会2012年以来的第一个新顶级项目,王旭作为联合创立者之一,成为项目Kata架构委员会的创始成员 。Kata容器和半年后发布的来自谷歌的gVisor并称为目前两大开源安全容器技术 。

推荐阅读