个人站点kirago杂谈
根据官网containerd.io的简介,可以得知 containerd
作为容器的生命周期管理。其在整个容器生态的组织架构中的职责如下:
如下分析 containerd
的启动流程
基于 containerd-v1.7.0 版本分析
入口代码其实比较简单,具体如下:
// cmd/containerd/main.go
func main() {
app := command.App()
if err := app.Run(os.Args); err != nil {
fmt.Fprintf(os.Stderr, "containerd: %s\n", err)
os.Exit(1)
}
}
command.App 关键逻辑如下:
flags 构造
注册插件,重点在于 plugin.Init 初始化构造
启动 TCPServer、GCPServer、TTRPCServer
流程图大纲如下:
后续会结合具体的插件进行明细示例分析。