深究Containerd源码-7-Containerd-shim-runc-v2分析
代码基于v1.7.0-beta.0-89-g344da9edb
看启动流程,首先将流程回溯到上一章shimManager.startShim,在binary.Start流程中,会给shim增加一个start参数,
此action决定了在shim启动流程中,走到了case start,如下,通过manager.Start会再通过子进程的方式启动shim,将子进程启动的监听服务定制返回给containerd,实现containerd进程和shim进程解除父子关系,新的独立shim进程启动ttrpc服务,实现rpc交互。

独立进程的shim服务,主要包括如下plugin,核心是ttrpc.v1.task,该服务实现了runc容器的生命周期管理功能。

展开ttrpc.v1.task,类图如下,主结构service实现了ttrpcService和TaskService接口,支持ttrpc调用,主要关联Container结构,一个shim支持创建多个container,Container主要关联Process接口,Process接口主要实现容器进程的生命周期管理,由Init实现此接口,并关联到go-runc项目Runc结构,Runc对于一个runc实例。

看Create流程,如下,最终是通过Cmd启动runc create进程。

开源的东西,不需要说明出处,就说你自己写的