文档章节

runC源码分析——主体调用链

WaltonWang
 WaltonWang
发布于 2017/01/22 20:27
字数 326
阅读 132
收藏 0

本文将简单的对runC的源码调用主体逻辑进行梳理,为跟系统的阅读runC源码。 ##runC总体调用逻辑 下图中,runC源码逻辑跳转流程总体上分为三步: main入口 ——> runC处理 ——> libcontainer处理。

runC其实就是在libcontainer的基础上进行了封装成各个Command。

runC源码主体调用逻辑

具体runC的各个Command的调用链见如下:

##runC处理

###checkpoint

checkpointCommand(main.go) —> checkpointCommand(checkpoint.go)

###container

createCommand(main.go)—>createCommand(create.go)—>startContainer(untils_linux.go)—>run(untils_linux.go) deleteCommand(main.go)—>deleteCommand(delete.go)—>destroy(untils_linux.go) eventsCommand(main.go)—>eventsCommand(events.go) execCommand(main.go)—>execCommand(exec.go)—>execProcess(exec.go)->run(untils_linux.go) initCommand(main.go)—>initCommand(main_unix.go) killCommand(main.go)—>killCommand(kill.go) listCommand(main.go)—>getContainers(list.go) pauseCommand(main.go) —>pauseCommand(pause.go) psCommand(main.go)—>psCommand(ps.go) restoreCommand(main.go)—>restoreCommand(restore.go)—>restoreContainer(restore.go) resumeCommand(main.go)—>resumeCommand(pause.go) runCommand(main.go)—>runCommand(run.go)—>startContainer(untils_linux.go) specCommand(main.go)—>specCommand(spec.go) end startCommand(main.go)—>startCommand(start.go) stateCommand(main.go)—>stateCommand(state.go) updateCommand(main.go)—>updateCommand(update.go)

##runC to libcontainer ###checkpoint

checkpointCommand(checkpoint.go)—> Checkpoint(libcontainer/container_linux.go) ###container run(untils_linux.go)—>Run(libcontainer/container_linux.go) destroy(untils_linux.go)—>Destroy(libcontainer/container_linux.go) eventsCommand(events.go)—>Status(libcontainer/container_linux.go) execProcess(exec.go)—>Status\Stopped\State(libcontainer/container_linux.go) || run(untils_linux.go)—>Start\Run\Destroy(libcontainer/container_linux.go) initCommand(main_unix.go)—>StartInitialization(libcontainer/factory_linux.go) killCommand(kill.go)—>Signal(libcontainer/container_linux.go) getContainers(list.go)—>Status\State\Stopped(libcontainer/container_linux.go) pauseCommand(pause.go)—>Pause(libcontainer/container_linux.go) psCommand(ps.go)—>exec.Command("ps", psArgs...).Output() restoreContainer(restore.go)—>Restore(libcontainer/container_linux.go) resumeCommand(pause.go)—>Resume(libcontainer/container_linux.go) startContainer(untils_linux.go)—>Run(libcontainer/factory.go) startCommand(start.go)—>Exec(libcontainer/container_linux.go) stateCommand(state.go)—>State(libcontainer/container_linux.go) updateCommand(update.go)—>Set(libcontainer/container_linux.go)

© 著作权归作者所有

WaltonWang
粉丝 232
博文 106
码字总数 226812
作品 0
深圳
程序员
私信 提问
runc容器逃逸漏洞最强后续:应对之策汇总与热点疑问解答

美国时间2019年2月11日晚,runc通过oss-security邮件列表披露了runc容器逃逸漏洞CVE-2019-5736的详情。runc是Docker、CRI-O、Containerd、Kubernetes等底层的容器运行时,此次安全漏洞无可避...

RancherLabs
2019/02/15
207
0
RunC容器逃逸漏洞席卷业界,网易云如何做到实力修复?

近日,业界爆出的runC容器越权逃逸漏洞CVE-2019-5736,席卷了整个基于runC的容器云领域,大量云计算厂商和采用容器云的企业受到影响。网易云方面透露,经过技术团队的紧急应对,网易云上的容...

网易云
2019/02/19
0
0
runC爆严重漏洞影响Kubernetes、Docker等及阿里云修复runC漏洞的公告

2月12日,春节刚过。朋友圈就看到《runC爆严重漏洞:Kubernetes、Docker等中招》的消息。 runC 是 Docker,Kubernetes 等依赖容器的应用程序的底层容器运行时。此次爆出的严重安全漏洞可使攻...

云篆
2019/02/13
0
0
docker1.12-containerd源码分析

从原openstack转型至docker已有一段时间。更稳定的使用docker了解docker的各流程,从源代码层面了解下containerd。本文基于docker 1.12版本,从1.11开始docker已拆分docker daemon container...

qwjhq
2018/06/26
0
0
深入理解 nvidia-docker 2.0

女主宣言 上篇推送我们介绍了 nvidia-docker 2.0 在我司大规模 Kubernetes 集群上的实践,本篇文章就将介绍相较于旧版本,nvidia-docker 2.0 的设计优势及其实现机制,希望能对大家有所帮助。...

ZVAyIVqt0UFji
2019/01/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MBTI助你成功,让你更了解你自己

MBTI助你成功,让你更了解你自己 生活总是一个七日接着又一个七日,相信看过第七日的小伙伴,很熟悉这段开场白,人生是一个测试接着又一个测试,上学的时候测试,是为了证明你的智力,可谓从...

蛤蟆丸子
今天
55
0
Android实现App版本自动更新

现在很多的App中都会有一个检查版本的功能。例如斗鱼TV App的设置界面下: 当我们点击检查更新的时候,就会向服务器发起版本检测的请求。一般的处理方式是:服务器返回的App版本与当前手机安...

shzwork
昨天
72
0
npm 发布webpack插件 webpack-html-cdn-plugin

初始化一个项目 npm init 切换到npm源 淘宝 npm config set registry https://registry.npm.taobao.org npm npm config set registry http://registry.npmjs.org 登录 npm login 登录状态......

阿豪boy
昨天
87
0
java基础(16)递归

一.说明 递归:方法内调用自己 public static void run1(){ //递归 run1(); } 二.入门: 三.执行流程: 四.无限循环:经常用 无限递归不要轻易使用,无限递归的终点是:栈内存溢出错误 五.递...

煌sir
昨天
63
0
REST接口设计规范总结

URI格式规范 URI中尽量使用连字符”-“代替下划线”_”的使用 URI中统一使用小写字母 URI中不要包含文件(脚本)的扩展名 URI命名规范 文档(Document)类型的资源用名词(短语)单数命名 集合(Co...

Treize
昨天
69
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部