podman runc

简介: podman runc

什么是runc


runc是基于OCI规范,用于生成和运行容器的CLI工具,由go语言编写,完成支持Linux特性,例如: selinux,cgroups等,是个独立的组件,甚至于你可以用此来运行符合OCI规范的镜像,或则适用runc单独构建并且运行镜像,除此之外,还有一个工具叫做crun是用c语言编写的符合 OCI规范的工具,注意不要搞混了。除了runccrun,还有其他工具么? 答案是有的,例如: katagVisor等。



runc安装

这里简单提一下,因为runc是使用go语言进行编写的,所以你可以在github``release中下载适合自己的系统的runc,而不用编译安装,不过还是要提及一下。


二进制安装

runc``github``release选择合适的版本和类型进行下载即可,地址: github.com/opencontain…

image.png



源码安装

不建议直接git clone项目,而是和上述一致,在release中直接下载源码进行编译安装。

前提: go版本需要高于1.17

检测go版本


image.png


安装依赖

yum install libseccomp-devel -y



下载v1.1.1的源码并且编译安装

wget https://github.com/opencontainers/runc/archive/refs/tags/v1.1.1.tar.gz
tar xf v1.1.1.tar.gz
cd runc-1.1.1/
make


查看版本

image.png




尝试使用runc启动一个容器


从podman中导出一个容器

查看正在运行的容器

image.png


我们导出nginx5

使用 podman export导出


image.png


创建rootfs目录并且解压

image.png


利用runc生成容器规范文件

命令: runc spec

image.png



利用runc启动容器

命令: runc run pdudoJuejinRuncIDs

ps: pdudoJuejinRuncIDs 是容器ID

image.png


查看runc启动的容器

我们打开另外一个窗口,并且使用 runc list查看,正在我们刚刚启动的容器


image.png


image.png



感悟

podman使用runc作为默认的runtime,所以我们可以这样玩


image.png


我们发现,使用runc list 也能输出正在运行的容器,甚至于我们可以使用runc ps 容器ID输出正在运行的容器进程信息

image.png


容器运行时,不仅只有runc还有如前文所述的那几种,都是基于OCI规范标准的,你也许和我一样好奇,这个标准有什么用? 我举个例子吧,前段时间,kubernetes宣布在v1.20中弃用docker闹得沸沸扬扬,大家好奇这货为啥不支持docker了,原因是因为docker出来的时候业界还没有标准达成,就像是上世纪计算机那阵子,不也出现了大端序 和 小端序么,大家都各玩各的,回来头来看docker,它之所以能够在kubernetes上跑,是因为有dockershim这么个中间件,这就是先有东西,再有标准(CRI),所以标准很重要,以至于我们按照标准可以写个类似runc出来,或则按照runc我们写个podman出来。扯多了,扯多了。反正目前podman(v3.4.4) 是使用 runc作为默认runtime的。


发现掘金这个激励计划,有点意思,我现在强迫自己学习,我清明假期,每天都要花大概3-4个小时,确认主题,查询资料,然后做实验,最后整理成文档,掘金真是强~






相关文章
|
7月前
|
缓存 Linux 调度
Docker介绍
Docker介绍
202 0
|
6月前
|
Linux 应用服务中间件 nginx
|
数据可视化 应用服务中间件 nginx
|
关系型数据库 MySQL Docker
|
虚拟化 云计算 Docker
带你一分钟看懂 “Docker”
2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫“dotCloud”的公司。 这家公司主要提供基于PaaS的云计算技术服务。具体来说,是和LXC有关的容器技术。 后来,dotCloud公司将自己的容器技术进行了简化和标准化,并命名为——Docker。 Docker技术诞生之后,并没有引起行业的关注。而dotCloud公司,作为一家小型创业企业,在激烈的竞争之下,也步履维艰。
77 1
|
Linux Docker 容器
|
运维 Java 应用服务中间件
|
Docker 容器
|
NoSQL Java Linux