深入理解Docker容器执行引擎runC
2017-12-19 22:01
597 查看
1 简介
根据官方的定义:runC是一个根据OCI标准创建并运行容器的CLI tool。Docker就是基于runC创建的,简单地说,runC就是docker中最为核心的部分,容器的创建,运行,销毁等等操作最终都将通过调用runc完成。而runC也有自己的客户端,下面我们将演示如何用runC,以最精简的方式创建并运行一个容器。
1.1 利用runc运行busybox容器
下载并编译runC# create a 'github.com/opencontainers' in your GOPATH/src cd github.com/opencontainers git clone https://github.com/opencontainers/runc cd runc make sudo make install
创建容器的根文件系统
# create the top most bundle directory mkdir /mycontainer cd /mycontainer # create the rootfs directory mkdir rootfs # export busybox via Docker into the rootfs directory docker export $(docker create busybox) | tar -C rootfs -xvf -
利用runc的spec命令创建默认的配置文件config.json
runc spec
利用runc运行busybox容器
# run as root cd /mycontainer runc run mycontainerid / # ls bin dev etc home proc root sys tmp usr var
可以看到,容器成功运行,此时我们打开另一个终端观察容器的运行状态
runc list ID PID STATUS BUNDLE CREATED OWNER mycontainerid 1070 running /mycontainer 2017-12-20T12:26:30.159978871Z root
事实上,"runc run"是一个复合命令,它包含了容器的创建(runc create),启动(runc start)以及在退出之后对容器进行的销毁(runc delete),从演示的角度看它是最为直观的。但是对于源码分析来说,将创建,启动,销毁三个过程分开,显然会让整个过程更为简单和易于接受。
下面我们就将结合源码,对整个容器技术最为核心的部分进行探究—— 容器是创建、启动以及销毁的。
2 容器的创建
相关文章推荐
- [深入理解Java虚拟机]第九章 字节码执行引擎-类加载及执行子系统的案例与实战
- 深入理解java虚拟机-第五章:虚拟机字节码执行引擎
- [深入理解Java虚拟机]第八章 字节码执行引擎-基于栈的字节码解释执行引擎
- 深入理解Java虚拟机 字节码执行引擎
- 深入理解JVM读书笔记--字节码执行引擎
- 虚拟机字节码执行引擎——深入理解Java虚拟机
- 深入理解Java虚拟机----(七)字节码执行引擎
- 深入理解JVM之虚拟机字节码执行引擎
- 深入理解JVM-虚拟机字节码执行引擎
- 深入理解JVM08--虚拟机字节码执行引擎--栈帧结构
- 深入理解JVM—字节码执行引擎
- 深入理解Java虚拟机-8虚拟机字节码执行引擎
- 深入理解JVM—字节码执行引擎
- 深入理解Docker(镜像、容器、服务、swarm、stack)
- 深入理解Java虚拟机-- java虚拟机字节码执行引擎浅析
- 深入理解Java虚拟机-虚拟机字节码执行引擎(八)
- 深入理解JS引擎的执行机制
- 《深入理解java虚拟机》-虚拟机字节码执行引擎
- 深入理解JVM-字节码执行引擎
- 深入理解 js 引擎的执行机制