运行时
2024年05月14日
一、认识
容器的运行时(runtime
) 就是运行容器和管理容器进程、镜像的工具。
二、分类
Docker
属于容器技术早期的发展项目,也是目前最广泛的容器引擎技术。当然,随着容器生态圈的日益繁荣,业界慢慢也出现了其他各种运行时工具,如 containerd
、rkt
、Kata Container
、CRI-O
等。
2.1 低层运行时
低层运行时 主要负责与宿主机操作系统打交道,根据指定的容器镜像在宿主机上运行容器的进程,并对容器的整个生命周期进行管理。而这个低层运行时,正是负责执行设置容器 NameSpace
、Cgroups
等基础操作的组件。常见的低层运行时种类有:
-
runc
: 传统的运行时,基于Linux Namespace
和Cgroups
技术实现,代表实现Docker
-
runv
: 基于虚拟机管理程序的运行时,通过虚拟化guest kernel
, 将容器和主机隔离开来,使得其边界更加清晰。代表实现是Kata Container
和Firecracker
-
runsc
:runc
+safety
, 通过拦截应用程序的所有系统调用,提供安全隔离的轻量级容器运行时沙箱。代表实现是谷歌的gVisor
2.2 高层运行时
高层运行时 主要负责镜像的管理、转化等工作,为容器的运行做前提准备。主流的高层运行时主要containerd
和 CRI-O
。高层运行时 与 低层运行时 各司其职,容器运行时一般先由高层运行时将容器镜像下载下来,并解压转换为容器运行需要的操作系统文件,再由低层运行时启动和管理容器。