文章
问答
冒泡
containerd源码分析-[1]启动流程

个人站点kirago杂谈


个人站点.png


根据官网containerd.io的简介,可以得知 containerd 作为容器的生命周期管理。其在整个容器生态的组织架构中的职责如下:

architecture

如下分析 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

流程图大纲如下:

containerd-run

后续会结合具体的插件进行明细示例分析。

containerd

关于作者

Kirago
个人站点 https://kiragoo.github.io/
获得点赞
文章被阅读