从零开始入门 K8s:深入剖析 Linux 容器( 四 )


容器是一种轻量级的虚拟化技术 , 因为它跟虚拟机比起来 , 它少了一层 hypervisor 层 。 先看一下下面这张图 , 这张图简单描述了一个容器的启动过程 。

最下面是一个磁盘 , 容器的镜像是存储在磁盘上面的 。 上层是一个容器引擎 , 容器引擎可以是 docker , 也可以是其它的容器引擎 。 引擎向下发一个请求 , 比如说创建容器 , 这时候它就把磁盘上面的容器镜像运行成在宿主机上的一个进程 。

对于容器来说 , 最重要的是怎么保证这个进程所用到的资源是被隔离和被限制住的 , 在 Linux 内核上面是由 cgroup 和 namespace 这两个技术来保证的 。 接下来以 docker 为例 , 详细介绍一下资源隔离和容器镜像两部分的内容 。

一、资源隔离和限制
namespace
namespace 是用来做资源隔离的 , 在 Linux 内核上有七种 namespace , docker 中用到了前六种 。 第七种 cgroup namespace 在 docker 本身并没有用到 , 但是在 runC 实现中实现了 cgroup namespace 。

我们先从头看一下:

推荐阅读