runC源码分析——Create/Run Container
来源:互联网 发布:java进程同步编程 编辑:程序博客网 时间:2024/05/18 03:02
本文是对runC源码的核心部分——Create Command & Run Command 进行源码分析。
对应的code workflow如下所示:
you should make sence these points:
- runC create command 和 run command的流程入口统一从/runc/utils_linux.go#334 main.startContainer方法,通过create flag进行区分。
- 业务逻辑中,主要有两个step构成:
- firstly create container filesystem and construct a linuxcontainer object by creatContainer function.
- secondly start process in container by runner.run function.
- 主要的逻辑在process的启动过程,注意以下几点:
- 对于namespace的隔离,主要通过bootstrapData封装好clone flags。
- 由sendconfig将bootstrapData封装的config传给容器起的init process。
- 调用系统setns进行namespace和process 的associate。
- oom_score_adj and rlimits等都在这里完成设置。
其中还是很多复杂的业务逻辑,需要读者跟着代码深入去研究,这里只是抛砖引玉。
1 0
- runC源码分析——Create/Run Container
- runc源码分析——create和start
- runc源码分析——create和start
- 【runc 源码分析】runc create / start 流程分析
- docker RunC Create 源码简单分析
- runC源码分析——namespace
- runC源码分析——cgroup
- runC源码分析——主体调用链
- 【containerd 1.0 源码分析】ctr run container 源码分析
- 【runc 源码分析】namespace 源码分析
- 【runc 源码分析】cgroup 源码分析
- 【docker 17 源码分析】 docker run container 源码分析二 docker start
- Quartz源码——QuartzSchedulerThread.run() 源码分析(三)
- Hadoop源码分析HDFS ClientProtocol——create
- Openstack Nova 源码分析 — Create instances (nova-conductor阶段)
- docker -- 标准化容器执行引擎——runC
- Swift源码分析----swift-container-auditor
- Swift源码分析----swift-container-info
- 2012年的macbook pro 用ssd 替换原有硬盘
- java基本数据类型与引用数据类型的区别
- Uva220黑白棋
- 关于Shiro中的Realm
- DateUtil
- runC源码分析——Create/Run Container
- python爬虫下载网站磁力链接
- 关于自己
- ijkplayer支持h264
- 工作五年的经历、吐槽
- Codeforces 283E
- oracle 忘记密码时,本机登陆时不需要密
- Celery源码分析(一)-------------从命令执行到生成Worker
- Ubuntu16.04+CUDA-8.0+opencv3.1+matlab2016b+mkl+caffe