runc init流程分析

runc init的作用是创建和配置容器并启动容器内进程。在执行runc create或runc exec等命令时,都会通过fork自己(/proc/self/exec)的方式创建出一个容器的parent进程,该parent进一步创建出child进程,而child进程再进一步创建出grandchild进程,在不同进程内会分别做不同的配置工作,这些进程之间通过环境变量和管道进行通信和交互。…

runc命令行工具基本使用

runc是linux上一个用来运行容器的管理工具,遵循OCI规范。 首先,我们通过一些简单的例子来演示一下runc创建和启动容器的例子: mkdir /tmp/mycontainer cd /tmp/mycontainer # 创建容器文件系统 mkdir rootfs # 导出busybox系统目录到rootfs docker export $(docker create busybox) | tar -C rootfs -xvf - 下面来生成一个spec文件:config.json。runc提供一个一个spec命令帮助我们生成一个基础的模板,后续我们可以基于这个模板作出自定义的修改。 ruc spec 启动容器: root@workstation:/tmp/testrunc# runc run mycontainer / # ip a 1: lo: <LOOPBACK,UP,LOWER_UPmtu 65536 qdisc noqueue qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever / # hostname runc /…