runc是docker在“重压”之下开源的一款核心容器运行时工具,本篇文章不会对runc的由来以及诞生进行详细的介绍,如有兴趣可自行搜索相关资料。我们只需要知道:只要我们的系统中有runc存在,那我们就能够通过runc来直接运行容器(前提是我们准备好一切它所需要的东西)
这里贴一段官方的说明:runc is a CLI tool for spawning and running containers on Linux according to the OCI specification.
——runc是一个用于在Linux系统上(依据Open Container Initiative,OCI)来启动以及运行容器的CLI工具
从前面一个小节中我们可以看到:想要直接利用runc来运行容器我们需要为其提供它所需要的一切,那么我们到底需要准备一些什么东西呢?
runc only supports Linux. It must be built with Go version 1.16 or higher.
,只支持Linux操作系统,系统必须具备go环境支持(1.16版本及以上)In order to enable seccomp support you will need to install libseccomp on your platform.
——runc需要seccomp的支持,seccomp是一个Linux系统调用的“管理过滤”工具,可以认为它限制了应用的权限# 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 -
# 在mycontainer文件夹下,以下命令会得到一个config.json文件
runc spec
# mycontainerid表示你自己想要的赋予容器的名称
runc run mycontainerid
# 上面的操作将会给予你一个在container“内部”的sh窗口