容器引擎有哪些

刘佳 417

容器引擎有以下3种:1.Docker;2.Kata Containers;3.Firecracker-containerd。其中,Docker容器引擎是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”,基于Go语言并遵从Apache2.0协议开源。

1.Docker

Docker是在 Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。诞生于2013年,最初的发起者是 dotCloud公司,后来改名为 Docker Inc,专注于 Docker相关技术和产品的开发。 Docker项目目前已经加入了 Linux基金会,有开源代码。现在Docker与Openstack同为最受欢迎的云计算开源项目。

Docker的Logo设计为蓝色鲸鱼拖着许多集装箱。鲸鱼可以看作宿主机,而集装箱可以理解为相互隔离的容器,每个集装箱中都包含自己的应用程序。正如 Docker的设计宗旨一样:Buid、 Ship and Run  Any  App、 Anywhere,即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统。

2.Kata Containers

出于对传统容器安全性的担忧,Intel 在 2015 年启动了它们以虚拟机为基础的容器技术:Clear Container。Clear Container 依赖 Intel VT 的硬件虚拟化技术以及高度定制的 QEMU-KVM(qemu-lite)来提供高性能的基于虚拟机的容器。在 2017 年,Clear container 项目加入了 Hyper RunV,这是一个基于 hypervisor 的 OCI 运行时,从而启动了 Kata 容器项目。Kata containers的核心思路是:

  1. 操作系统本身的容器机制没办法解决安全性问题,需要一个隔离层;
  2. 虚拟机是一个现成的隔离层,云服务已经让全世界相信,对户来说,”secure of VM” 是可以满足需求的;
  3. 手机里面只要有个内核,就可以支持 OCI 规范的语义,在内核上跑个 Linux 应用这并不太难实现;
  4. 虚机可能不够快,阻碍了它在容器环境的应用,那么可不可以拥有 “speed of container” 呢?

所以,Kata containers核心之一是把VM变得轻快稳,使之能满足容器高密弹性的需求。同时,作为一个容器运行时,必须深度融入生态,支持相关规范。

3.Firecracker-containerd

Firecracker-containerd是firecracker和containerd的合体。Firecracker是AWS基于Google crosvm开发的、配合KVM使用的一个轻量级安全VMM,用以支持和实现MicroVM。Firecracker MicroVM 同时具备传统虚拟机的安全性和工作负载隔离能力以及容器的速度和资源利用率。Firecracker具有如下一些特色:

  1. 抛弃 QEMU 使用的 C 语言,选择内存安全的 Rust 作为开发语言。
  2. 基于 crosvm 使用极简设备模型,模拟尽可能少的必要设备,减小暴露的攻击面。
  3. 高性能和低开销:得益于极简的设备模型, Firecracker 取消了 SeaBIOS (开源的 X86 BIOS),移除了 PCI 总线,取消了 VGA 显示等等硬件模拟,严格的说它甚至不是一台完整的虚拟计算机。而 Firecracker 运行的 GuestOS 使用的也是 AWS 定制过的精简 Linux 内核,同样裁剪掉了对应的设备驱动程序、子系统等等。因此叫它 MicroVM,其启动步骤和加载项要远远少于传统虚拟机。因此 Firecracker 目前已经能提供小于125ms 的 MircroVM 启动速度,每秒150台的启动能力,小于5MiB 的内存开销,并发运行4000台的极限承载容量(AWS i3.metal EC2 作为宿主机),以及热升级能力等。这些都是传统虚拟机所遥不可及,但现代化弹性工作负载又有强烈需求的性能指标。

但是,Firecracker毕竟只是一个VMM,还必须配合上containerd才能支持容器生态。所以,AWS又开源了firecracker-containerd项目,用于对接K8S生态。本质上Firecracker-containerd是另外一个私有化、定制化的Kata containers,整体架构和Kata containers类似,只是放弃了一些兼容性换取更简化的实现。

回复

我来回复
  • 暂无回复内容

联系我们
关注微信
关注微信
分享本页
返回顶部