博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
容器 runc kata_runC:小型容器引擎
阅读量:2523 次
发布时间:2019-05-11

本文共 2117 字,大约阅读时间需要 7 分钟。

容器 runc kata

是一种轻量级的通用容器运行时,是一种命令行工具,用于根据开放容器倡议(OCI)规范生成和运行容器。 那是短版。 长版:由Docker,Google,IBM,Microsoft,Red Hat和许多其他合作伙伴创建的用于创建通用和标准化运行时规范的治理伞,具有容器的运行时元素的可读规范文档,以及基于可用的实现Docker贡献给OCI的代码。 它包括libcontainer ,它是最初在Docker引擎中使用的原始下层库接口,用于设置我们称为容器的操作系统构造。

鉴于runC是一个具有常规发布节奏的开源项目,您可以找到 。 如果您下载或构建runC二进制文件,您将具有运行时规范元素,即JSON容器配置和根文件系统捆绑包,您可以使用runC作为简单的容器执行器来开始使用它所需的一切。 请注意,如果您安装的是Docker 1.11或更高版本,您还将自动在系统上安装runC的最新副本。 它最有可能被命名为docker-runC并安装在/ usr / bin中 ,并且可以在Docker之外使用,就像正常安装runC一样。

使用runC的好处

甚至在OCI和runC出现之前,许多Docker核心引擎开发人员就使用了runC前体nsinit,它允许简化的入口点来运行和调试低级容器功能,而没有整个Docker守护程序接口的开销。 既然存在runC,这肯定是一个持续的用例,尤其是对于可能暴露新的Linux隔离功能的用户。 例如,首先通过runC提供了使用Linux Checkpoint /在用户空间中还原( CRIU)项目的检查点/还原功能,并且现在正准备将其添加到runC上方的Docker守护程序中。 当然,随着runC / OCI扩展到Linux之外,这对于其他操作系统(OS)隔离原语也将是正确的,例如Solaris区域或基于Microsoft Windows的容器,它们都希望通过OCI运行时规范和runC实施具有功能。 。

除了在操作系统层开发新功能之外,runC是一个有用的调试平台,用于查找难以解决的错误,这些错误很难用容器过程上方的整个Docker堆栈进行调试。

runC入门面临的挑战

开发人员可能已经习惯了使用整个Docker生态系统的容器的低摩擦入口点,包括使用DockerHub(或私有注册表)获取图像,以及简单的docker run命令来启用和禁用其容器的各种功能和配置。 使用runC,开发人员必须从其他系统构造或导出文件系统捆绑包,才能为容器创建自己的起点。 他们还需要将具有与各种docker run标志相关的类似“旋钮”的JSON配置文件放在一起,但是必须将它们直接编码为JSON文件,因为runC二进制文件本身具有简单的start,stop,pause等接口。没有标志。

整体集装箱战略

这如何适合开发人员的整体策略可能取决于开发人员的意图和期望的结果。 对于需要更简单的容器执行模型而不需要更广泛的Docker守护程序功能的开发人员,然后将runC与配对使用,这是Docker 1.11及更高版本引擎中使用的另一个Docker开源项目,可能是一个不错的选择。 在西雅图DockerCon上的演讲结束后,我让几个开发人员来了,并分享了他们基于容器化和runC之一或两者构建的完整容器云架构,它们完成了有趣的工作负载和容器生命周期。 但是,在许多情况下,runC可能是较低层的细节,对于开发人员而言,它可能是普遍关注的,也可能不是。

讨论超出了纯runC的范围,我们还没有讨论的一种使用模型是runC与Docker引擎或其他将来与OCI兼容的引擎的可插入性。 早在OCI社区中有项目,如RUNV,runz,和其他人实施与Solaris区域,或一个轻量级的虚拟机管理程序的共同OCI运行规范(参见英特尔清晰集装箱为例)作为操作系统级隔离技术。 runC或类似runC的实现感兴趣的另一种方式是其他隔离技术或操作系统包含功能的开发人员。

映射容器功能,例如seccomp和用户名称空间

因为libcontainer,即为操作系统执行容器隔离原语的实际工作的操作系统层库,是runC的核心,所以任何OS层功能(例如seccomp和用户名称空间)都必须首先在runC中实现。它们可以暴露于更高层次,例如Docker引擎。 这项额外的功能-尝试尚未在更高层公开的runC新功能-吸引了runC另一个吸引力,而且Docker中公开的一些最新功能早在libcontainer和runC中就已可用进入Docker。 这也意味着在开发这些隔离功能或增强的安全性功能期间,runC是使用JSON配置文件测试和试用唯一配置的好工具。

在 ,Phil将演示此用例,并演示如何使用JSON配置文件中的seccomp条目尝试打开/关闭使用某些系统调用的功能,并立即观察对应用程序的影响。 他还将展示使用现有开放源代码工具的工作流,该工作流使用当前Docker容器和映像作为输入来创建可运行runC的配置和根文件系统捆绑包,从而简化开发人员使用runC的启动时间。

翻译自:

容器 runc kata

转载地址:http://rudzd.baihongyu.com/

你可能感兴趣的文章
边工作边刷题:70天一遍leetcode: day 33
查看>>
第10章 系统级I/O(下)
查看>>
mysql foreign key(外键) 说明与实例
查看>>
二叉树的非递归遍历
查看>>
android中Activity布局以及实例
查看>>
jsp中常用操作字符串的el表达式
查看>>
element-ui <el-input> 注册blur事件
查看>>
HTML5须知的特征和技术
查看>>
HTTP请求方式GET和POST的区别详解
查看>>
Python02_流程控制及数据结结构
查看>>
记录一个数据表联合查询过慢的“小坑”
查看>>
Java中的long与double的区别
查看>>
只出现一次的数字 [ LeetCode ]
查看>>
动手动脑3
查看>>
Oracle笔记之用户管理
查看>>
margin的相关属性:
查看>>
saas系统架构经验总结
查看>>
实现Icommand接口
查看>>
多用户ATM机(面向对象编程)
查看>>
Linux下管理软件的方法
查看>>