容器运行时相关名词梳理

容器运行时,是容器进程运行和管理的工具。本文主要摘抄了《Harbor 权威指南》第一章的部分内容。

OCI

2015 年成立,目标是以开放治理的方式定制操作系统虚拟化相关工业标准,主要包括容器镜像格式和容器运行时。
Docker 将 libcontainer 项目捐赠给 OCI,成为独立的容器运行时项目 runC

runC

最常用的容器运行时,属于底层运行时,被其它项目使用,如 containerd, CRI-O。
开发人员通过 runC 实现容器的声明周期管理,避免繁琐的系统调用。
不包括镜像管理功能,功能比较单一。

containerd

属于高层运行时,提供镜像的下载、解压等镜像管理功能。
不包含镜像构建以及上传等功能。

CRI

Kubernetes 1.5 版本开始,kubelet 中增加了一个容器运行时接口 CRI,用于支持多种运行时。需要接入 Kubernetes 的容器运行时必须实现 CRI 接口。
高层容器运行时需要接入 CRI。
CRI 和 容器运行时之间的接口层通常称为 shim (垫片)。

dockershim

Kubelet 中内置了docker运行时的 shim,也即 dockershim。
containerd 1.1 版本开始内置了CRI plugin,不再需要外置shim来转发请求

CRI-O

CRI-O 是替代 Docker 或者 containerd 的容器运行时方案,是 CRI 的一个实现,能够运行符合 OCI 规范的容器。
CRI-O 只用于运行容器,不能进行容器管理。
CRI-O 支持 runC 和 Kata Containers 这两种镜像。

Kata Containers

Kata Containers 是在2017年由 Hyper 的 runV 和 Intel 的 Clear Containers 项目合并而来的,通过轻量级的虚拟机实现安全容器,利用硬件虚拟化技术提供更好的应用隔离环境。
Kata Containers 属于低层运行时,只负责运行符合 OCI 运行时规范的容器,而容器镜像操作由高层运行时(如 Containerd)来完成。
Kata Containers 一般在 Kubernetes 环境中使用。Kubelet 通过 CRI 调用 Containerd 或 CRI-O,再调用 Kata Containers 执行运行时操作。

你可能感兴趣的:(容器运行时相关名词梳理)