初步了解并使用runc

简介:

       官方说明:runC是一个根据OCI(Open Container Initiative)标准创建并运行容器的CLI tool

       解释说明:简单理解,runc其实就是Docker最核心的部分,runc可以不通过Docker引擎,直接创建,运行,销毁容器。

我的环境:

       系统:CentOS Linux release 7.5.1804 (Core)

       runc:runc version 1.0.0-rc5

使用runc:

       runc的组成分为三部分:

              1.文件系统

              2.config.json配置文件

              3.entrypoint.sh入口

       使用docker可以很容易的生成runc容器的文件系统,ps:runc就是docker贡献给社区的。

       # docker pull centos

       # mkdir -p /home/runc_test/rootfs

       # cd /home/runc_test/

       # docker export $(docker create centos) | tar -C rootfs -xvf -

       现在rootfs目录下就是centos镜像的文件系统。然后我们生成config.json配置文件

       # runc spec

       此时同级目录下会创建出config.json

       现在我们编写entrypoint.sh放在rootfs目录下并给权限rwxr-xr-x(0755)

       entrypoint.sh的作用就是在启动容器之前做一些初始化配置,比如启动一些服务之类的。

       entrypoint.sh:

              #!/usr/sbin/init

              trap "exit 0" SIGTERM

              crond &

              /etc/rc.local &

              while true; do

                     sleep 1s

              done

       我们写了一个最简单的入口脚本,具体编写方式自行搜索,因为每个人创建的环境需要不同,本文只做简单使用演示。

编写脚本:(非必须操作)

       本人比较懒,写了启动,关闭,和进入容器的脚本。

       start.sh

              confpath="./ct.conf"

              source "$confpath"

              echo "starting .. $ctname"

              runc run -d $ctname &

       stop.sh

              confpath="./ct.conf"

              source "$confpath"

              echo "stopping .. $ctname"

              runc kill $ctname KILL

              runc delete $ctname

       enter.sh

              confpath="./ct.conf"

              source "$confpath"

              echo "starting .. $ctname"

              runc exec -t $ctname /bin/bash

       ct.conf

              ctname=自定义命名

容器状态说明:

       creating:使用 create 命令创建容器,这个过程称为创建中

       created:容器已经创建出来,但是还没有运行,表示镜像文件和配置没有错误,容器能够在当前平台上运行

       running:容器里面的进程处于运行状态,正在执行用户设定的任务

       stopped:容器运行完成,或者运行出错,容器还有很多信息保存在平台中,并没有完全被删除

       paused:暂停容器中的所有进程,可以使用 resume 命令恢复这些进程的执行

常用命令:

       查看容器内进程:runc ps $ctname

       容器中执行命令:runc exec $ctname ls

       删除容器      :runc delete $ctname 一般我们用来删除stooped状态的容器

       停止容器中任务:runc kill $ctname 默认会和谐的结束容器中的进程,特殊情况可以加参数9

       暂停容器中进程:runc pause $ctname 状态会由running 变成了paused,可以通过 resume 命令恢复容器

       资源使用状况  :runc events $ctname

网上一些runc start -b 。。报错是因为1.0.0版本不支持,之前用的0.4.0可以使用。具体支持的参数和使用方法,详见runc --help

你可能感兴趣的:(详解)