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个小时,确认主题,查询资料,然后做实验,最后整理成文档,掘金真是强~






相关文章
|
JSON 自然语言处理 Java
es索引、类型(mapping)、文档、ik分词器
es索引、类型(mapping)、文档、ik分词器
278 1
|
7月前
|
数据采集 分布式计算 监控
月之暗面Kimi大模型海量数据预处理实践
加速大模型的训练迭代,在模型数据预处理方面,需要高性价比、弹性灵活的 CPU 和 GPU 算力满足模型迭代的业务实践。
|
Ubuntu 安全 Linux
Docker的安装和版本详细介绍
Docker的安装和版本详细介绍
2607 0
Docker的安装和版本详细介绍
|
9月前
|
存储 缓存 数据挖掘
StarRocks 原理详解:探索高效 OLAP 的奥秘
StarRocks 是一款高性能分析型数据仓库,采用向量化、MPP架构、CBO等技术,实现多维、实时、高并发的数据分析。它支持从各类数据源高效导入数据,兼容MySQL协议,并具备水平扩展、高可用等特性,广泛应用于实时数仓、OLAP报表等场景。StarRocks 解决了传统数仓在查询性能、数据导入、扩展性和灵活性等方面的挑战,助力企业实现数据驱动的决策。其分布式架构和智能物化视图等功能显著提升了查询效率,适用于大数据生态中的各种复杂需求。
1576 15
|
缓存 测试技术 API
解锁开源模型高性能服务:SGLang Runtime 应用场景与实践
SGLang 是一个用于大型语言模型和视觉语言模型的推理框架。
|
8月前
|
关系型数据库 MySQL 分布式数据库
客户说|太美医疗选择阿里云PolarDB,助力医药研发数据安全应用
客户说|太美医疗选择阿里云PolarDB,助力医药研发数据安全应用
285 1
|
Linux PHP
Linux CentOS 宝塔 Suhosin禁用php5.6版本eval函数详细图文教程
【8月更文挑战第27天】本文介绍两种禁用PHP执行的方法:使用`PHP_diseval_extension`禁用和通过`suhosin`禁用。由于`suhosin`不支持PHP8,仅适用于PHP7及以下版本,若服务器安装了PHP5.6,则需对应安装`suhosin-0.9.38`版本。文章提供了详细的安装步骤,并强调了宝塔环境下与普通环境下的PHP路径差异。安装完成后,在`php.ini`中添加`suhosin.so`扩展并设置`executor.disable_eval = on`以禁用执行功能。最后通过测试代码验证是否成功禁用,并重启`php-fpm`服务生效。
348 2
|
人工智能 Linux 应用服务中间件
podman容器操作
podman容器操作
828 2
|
人工智能 自然语言处理 算法
哈啰集团全面接入通义灵码,AI 生成代码占比 20%,研发提效 12%
官宣!哈啰集团全面接入阿里云通义灵码专属版
21628 10
|
存储 弹性计算 资源调度
K8S下一代设备管理机制:DRA
背景Kubernetes从1.8开始引入了Device Plugin机制,用于第三方设备厂商以插件化的方式将设备资源(GPU、RDMA、FPGA、InfiniBand等)接入Kubernetes集群中。用户无需修改Kubernetes代码,只需在集群中以DaemonSet方式部署设备厂商提供的插件,然后在Pod中申明使用该资源的使用量,容器在启动成功后,便可在容器中发现该设备。然而,随着Kuber
3801 2
K8S下一代设备管理机制:DRA