所以在 2015 年,几乎在同一个星期,Intel OTC (Open Source Technology Center)
和国内的 HyperHQ 团队同时开源了两个基于虚拟化技术的容器实现,分别叫做 Intel
Clear Container 和 runV 项目。
而在 2017 年,借着 Kubernetes 的东风,这两个相似的容器运行时项目在中立基金会的撮
合下最终合并,就成了现在大家耳熟能详的 Kata Containers 项目。 由于 Kata
Containers 的本质就是一个精简后的轻量级虚拟机,所以它的特点,就是“像虚拟机一样
安全,像容器一样敏捷”。
而在 2018 年,Google 公司则发布了一个名叫 gVisor 的项目。gVisor 项目给容器进程配
置一个用 Go 语言实现的、运行在用户态的、极小的“独立内核”。这个内核对容器进程暴
露 Linux 内核 ABI,扮演着“Guest Kernel”的角色,从而达到了将容器和宿主机隔离开
的目的。
不难看到,无论是 Kata Containers,还是 gVisor,它们实现安全容器的方法其实是殊途
同归的。这两种容器实现的本质,都是给进程分配了一个独立的操作系统内核,从而避免了
让容器共享宿主机的内核。这样,容器进程能够看到的攻击面,就从整个宿主机内核变成了
一个极小的、独立的、以容器为单位的内核,从而有效解决了容器进程发生“逃逸”或者夺
取整个宿主机的控制权的问题。这个原理,可以用如下所示的示意图来表示清楚。
文档被以下合辑收录
评论