什么是容器运行时?

深入了解容器运行时,以便您可以理解容器环境是如何构建的。
64 位读者喜欢这个。
Ships at sea on the web

容器镜像的考察中,我讨论了容器的基础知识,但现在是时候深入研究容器运行时了,以便您可以理解容器环境是如何构建的。本文中的信息部分摘自开放容器倡议组织 (OCI) 的官方文档,OCI 是容器的开放标准,因此无论您使用何种容器引擎,此信息都适用。

容器运行时

那么,当您运行 podman rundocker run 命令时,后端真正发生了什么?这是一个逐步概述,供您参考

  1. 如果本地没有镜像,则从镜像仓库拉取镜像
  2. 镜像被提取到写时复制文件系统上,所有容器层相互覆盖以创建合并的文件系统
  3. 准备容器挂载点
  4. 从容器镜像设置元数据,包括覆盖 CMD、ENTRYPOINT(来自用户输入)、设置 SECCOMP 规则等设置,以确保容器按预期运行
  5. 内核收到警报,为该容器分配某种隔离,例如进程、网络和文件系统(命名空间)
  6. 内核还收到警报,为该容器分配一些资源限制,例如 CPU 或内存限制(cgroups)
  7. 系统调用 (syscall) 被传递到内核以启动容器
  8. 设置 SELinux/AppArmor

容器运行时负责处理以上所有步骤。当我们想到容器运行时时,首先想到的可能是 runc、lxc、containerd、rkt、cri-o 等。好吧,您没有错。这些都是容器引擎和容器运行时,每个都为不同的情况而构建。

容器运行时更侧重于运行容器、为容器设置命名空间和 cgroups,也称为较低级别的容器运行时。更高级别的容器运行时或容器引擎侧重于格式、解包、管理和镜像共享。它们还为开发人员提供 API。

开放容器倡议组织 (OCI)

开放容器倡议组织 (OCI) 是一个 Linux 基金会项目。其目的是围绕如何使用容器运行时和容器镜像格式来设计某些开放标准或结构。它由 Docker、rkt、CoreOS 和其他行业领导者于 2015 年 6 月成立。

它通过两个规范来实现这一点

1. 镜像规范 (image-spec)

此规范的目标是使创建可互操作的工具成为可能,用于构建、传输和准备要运行的容器镜像。

规范的高级组件包括

2. 运行时规范 (runtime-spec)

本规范旨在定义容器的配置、执行环境和生命周期。config.json 文件为所有受支持的平台提供容器配置,并详细说明了启用容器创建的字段。详细说明了执行环境以及为容器生命周期定义的通用操作,以确保在容器内运行的应用程序在运行时之间具有一致的环境。

Linux 容器规范使用各种内核功能,包括命名空间、cgroups、capabilities、LSM 和文件系统 jail,以实现该规范。

现在您知道了

容器运行时由 OCI 规范管理,以提供一致性和互操作性。许多人在不需要了解容器工作原理的情况下使用容器,但是当您需要对如何使用容器进行故障排除或优化时,了解容器是一个宝贵的优势。


本文基于一篇 techbeatly 文章,并已获得许可进行改编。

接下来阅读什么
标签
User profile image.
我是一名解决方案架构师,管理着 200 多个战略客户,拥有 5 年以上使用 Linux、Ansible、Docker、Kubernetes 和 OpenShift 等开源技术的经验。我通过使用定制的开源解决方案,帮助企业解决他们在混合云环境中的自动化和容器化等 IT 挑战。

评论已关闭。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可获得许可。
© . All rights reserved.