深究Containerd源码-1-简介和概览
代码基于v1.7.0-beta.0-89-g344da9edb
containerd是一款高性能容器运行时管理程序,通常以守护进程方式运行,docker和kubelet通过grpc对接containerd,南向可对接流行的容器运行时,如runc,kata
通过官方(https://containerd.io)的架构图,containerd从逻辑上分成三层:
API层提供北向服务GRPC调用接口和度量数据采集接口,API支持Kuberntes CRI标准和containerd client两种形式
Core层是核心逻辑层,包含服务和元数据
Backend层主要是南向对接操作系统容器运行时

从containerd源码看,每一个模块都是一个plugin,并且相同类型的plugin以树状组成子系统,例如containerd启动流程
总体上containerd的类图containerd Server包括Plugins和Config

如下containerd启动流程,核心为server.New构建containerd.Server实例,LoadPlugins会获取所有注册到register变量的plugin,完成plugin初始化和加载。每个plugin的包中通过func init调用plugin.Register将自己注册到register变量,例如CRI Plugin注册
containerd/pkg/cri/cri.go

后续我们重点分析一下从CRI开始容器的生命周期代码流程。
开源的东西,不需要说明出处,就说你自己写的