Open Container项目旗下的轻量级通用运行时容器runC最近公布了1.0发布候选版。runC是一种按照OCP规范生成和运行容器的CLI工具,代码已发布至GitHub。
容器技术逐渐受到用户和社区的欢迎,Linux基金会早在2015年6月就成立了OCI(Open Container Initiative)组织,旨在围绕容器格式和运行时制定开放的标准。该组织已得到包括Amazon、华为、Google、Microsoft等云供应商的支持。源自Docker的runC是通过开放容器格式标准(OCF, Open Container Format)制定的一种具体实现。
runC的可嵌入特性使得容器可以作为runC的子进程启动,并能在无需运行Docker代理程序的情况下将其嵌套至各种其他系统中。runC以libcontainer为基础开发而来,这种容器技术目前正驱动着全球数百万Docker引擎,用户可以直接通过runC运行Docker映像。
功能和主要改进
runC的目标是让用户随时随地使用标准化的容器,其中包含大量广受欢迎的功能和特性,例如:
- 完整支持Linux命名空间,包括用户命名空间。
- 原生支持Linux的所有安全功能,包括Selinux、Apparmor、seccomp、control groups、capability drop、pivot_root、uid/gid dropping等。
- 原生支持实时迁移和Windows 10容器。
- 计划为Arm、Power、Sparc等架构提供原生支持,并直接得到Arm、Intel、Qualcomm、IBM,以及整个硬件制造商生态系统的参与和支持。
- 计划为前沿硬件功能提供原生支持,例如DPDK、sr-iov、tpm、secure enclave等。
- 可移植的性能配置文件,以及成为正式标准的配置格式。
此次公布的1.0发布候选版是OCI运行时规范和runC 1.0的首个候选版本,该版本针对创建和启动等命令进行了较大调整。
容器的创建和启动过程现已拆分为两个步骤,通过这样的设计,上层系统可以在用户定义的过程启动前修改容器内容。如果依然希望像之前的版本那样使用runC,则可以使用runc run
命令。在该版本中,还可以使用runc state
命令获取容器的状态信息。另外可以通过新增的ps
命令查看容器内的进程:
除此之外,本次发布的1.0候选版还在下列几个方面有所改进:
- 为更多架构提供了seccomp支持
- 更稳定的状态输出
- 增加了用于动态更新容器资源的
update
命令 - 大量其他改进和 man 页面
目前可以将1.3版以上的Docker映像与runC配合使用。此外runC还可配合systemd使用。