关于docker:什么是容器运行时

5次阅读

共计 1378 个字符,预计需要花费 4 分钟才能阅读完成。

通过深刻理解容器运行时,了解容器环境是如何建设的。

在学习 容器镜像 时,咱们探讨了容器的基本原理,但当初是深入研究容器运行时 runtime 的时候了,从而理解容器环境是如何构建的。本文的局部信息摘自 凋谢容器打算 Open Container Initiative(OCI)的 官网文档,所以无论应用何种容器引擎,这些信息都是统一的。

容器运行机制
那么,当你运行 podman run 或 docker run 命令时,在后盾到底产生了什么?一个分步的概述如下:

如果本地没有镜像,则从镜像注销仓库 registry 拉取镜像
镜像被提取到一个写时复制(COW)的文件系统上,所有的容器层互相重叠以造成一个合并的文件系统
为容器筹备一个挂载点
从容器镜像中设置元数据,包含诸如笼罩 CMD、来自用户输出的 ENTRYPOINT、设置 SECCOMP 规定等设置,以确保容器按预期运行
揭示内核为该容器调配某种隔离,如过程、网络和文件系统(命名空间 namespace)
揭示内核为改容器调配一些资源限度,如 CPU 或内存限度(控制组 cgroup)
传递一个零碎调用 syscall 给内核用于启动容器
设置 SELinux/AppArmor
容器运行时负责上述所有的工作。当咱们提及容器运行时,想到的可能是 runc、lxc、containerd、rkt、cri-o 等等。嗯,你没有错。这些都是容器引擎和容器运行时,每一种都是为不同的状况建设的。

容器运行时 Container runtime 更侧重于运行容器,为容器设置命名空间和控制组(cgroup),也被称为底层容器运行时。高层的容器运行时或容器引擎专一于格局、解包、治理和镜像共享。它们还为开发者提供 API。

凋谢容器打算(OCI)
凋谢容器打算 Open Container Initiative(OCI)是一个 Linux 基金会的我的项目。其目标是设计某些凋谢规范或围绕如何与容器运行时和容器镜像格局工作的构造。它是由 Docker、rkt、CoreOS 和其余行业领导者于 2015 年 6 月建设的。

它通过两个标准来实现如下工作:

1、镜像标准
该标准的指标是创立可互操作的工具,用于构建、传输和筹备运行的容器镜像。

该标准的高层组件包含:

镜像清单 — 一个形容形成容器镜像的元素的文件
镜像索引 — 镜像清单的正文索引
镜像布局 — 一个镜像内容的文件系统布局
文件系统布局 — 一个形容容器文件系统的变更集
镜像配置 — 确定镜像层程序和配置的文件,以便转换成 运行时捆包
转换 — 解释应该如何进行转换的文件
描述符 — 一个形容被援用内容的类型、元数据和内容地址的参考资料
2、运行时标准
该标准用于定义容器的配置、执行环境和生命周期。config.json 文件为所有反对的平台提供了容器配置,并具体定义了用于创立容器的字段。在具体定义执行环境时也形容了为容器的生命周期定义的通用操作,以确保在容器内运行的利用在不同的运行时环境之间有一个统一的环境。

Linux 容器标准应用了各种内核个性,包含命名空间 namespace、控制组 cgroup、权能 capability、LSM 和文件系统隔离 jail 等来实现该标准。

小结
容器运行时是通过 OCI 标准治理的,以提供一致性和互操作性。许多人在应用容器时不须要理解它们是如何工作的,但当你须要排除故障或优化时,理解容器是一个贵重的劣势。
欢送通过 3A 网络(http://iis3.com/)选购云服务器

正文完
 0