文档章节

runC源码分析——Create/Run Container

WaltonWang
 WaltonWang
发布于 2017/01/22 20:32
字数 228
阅读 148
收藏 0

本文是对runC源码的核心部分——Create Command & Run Command 进行源码分析。

对应的code workflow如下所示: 这里写图片描述

you should make sence these points:

  1. runC create command 和 run command的流程入口统一从/runc/utils_linux.go#334 main.startContainer方法,通过create flag进行区分。
  2. 业务逻辑中,主要有两个step构成:
  • firstly create container filesystem and construct a linuxcontainer object by creatContainer function.
  • secondly start process in container by runner.run function.
  1. 主要的逻辑在process的启动过程,注意以下几点:
  • 对于namespace的隔离,主要通过bootstrapData封装好clone flags。
  • 由sendconfig将bootstrapData封装的config传给容器起的init process。
  • 调用系统setns进行namespace和process 的associate。
  • oom_score_adj and rlimits等都在这里完成设置。

其中还是很多复杂的业务逻辑,需要读者跟着代码深入去研究,这里只是抛砖引玉。

© 著作权归作者所有

WaltonWang
粉丝 217
博文 105
码字总数 223702
作品 0
深圳
程序员
私信 提问
runC 1.0 发布候选版已公布

Open Container项目旗下的轻量级通用运行时容器runC最近公布了1.0发布候选版。runC是一种按照OCP规范生成和运行容器的CLI工具,代码已发布至GitHub。 容器技术逐渐受到用户和社区的欢迎,Lin...

oschina
2016/06/13
2.2K
3
创建pod时报Failed create pod sandbox

运行下面的命令: kubectl run nginx2 --image=nginx --replicas=2 查看pod状态,如下: kubectl get all 查看pod描述信息如下: kubectl describe pod nginx2-6dbf4cd9bc-mbtvh 查看登录到1...

故新
2018/07/04
0
0
runc容器逃逸漏洞最强后续:应对之策汇总与热点疑问解答

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

RancherLabs
02/15
0
0
深入理解 nvidia-docker 2.0

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

ZVAyIVqt0UFji
01/03
0
0
基于 hypervisor 的 Docker 运行时 - runq

runq 是一个基于 hypervisor 的 Docker 运行时,基于 runc 在轻量级的 KVM/Qemu 虚拟机上运行普通的 Docker 镜像。旨在解决实际的问题,而不是堆叠功能。 功能特性 设计简约,代码量少 没有对...

匿名
2018/07/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

数组算法

/*数组的相关的算法操作:1、在数组中找最大值/最小值*/class Test11_FindMax{public static void main(String[] args){int[] array = {4,2,6,8,1};//在数组中找最大...

architect刘源源
36分钟前
2
0
okhttp3 以上版本在安卓9.0无法请求数据的解决方案

应用官方的说明:在 Android 6.0 中,我们取消了对 Apache HTTP 客户端的支持。 从 Android 9 开始,默认情况下该内容库已从 bootclasspath 中移除且不可用于应用。且Android P 限制了明文流量...

chenhongjiang
今天
11
0
简单示例:NodeJs连接mysql数据库

开篇引用网上的说法: 简单的说 Node.js 就是运行在服务端的 JavaScript。Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。Node.js是一个事件驱动I/O服务端JavaScript环境,基于...

李朝强
今天
8
0
大数据学习路线

年薪30W大数据学习路线图: 一、Hadoop入门,了解什么是Hadoop 1、Hadoop产生背景 2、Hadoop在大数据、云计算中的位置和关系 3、国内外Hadoop应用案例介绍 4、国内Hadoop的就业情况分析及课程...

陈小君
今天
3
0
解读 Kylin 3.0.0 | 更敏捷、更高效的 OLAP 引擎

在近期的 Apache Kylin Meetup 成都站上,我们邀请到 Kyligence 架构师 & Apache Kylin Committer 倪春恩对 Kylin 3.0.0 版本的一些重要功能及改进从使用到原理进行了介绍: Apache Kylin 在...

ApacheKylin
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部