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

第六个是 pid cgroup , pid cgroup 限制的是容器里面可以用到的最大进程数量 。

不常用的 cgroup
也有一部分是 docker 容器没有用到的 cgroup 。 容器中常用的和不常用的 , 这个区别是对 docker 来说的 , 因为对于 runC 来说 , 除了最下面的 rdma , 所有的 cgroup 其实都是在 runC 里面支持的 , 但是 docker 并没有开启这部分支持 , 所以说 docker 容器是不支持下图这些 cgroup 的 。

二、容器镜像
docker images
接下来我们讲一下容器镜像 , 以 docker 镜像为例去讲一下容器镜像的构成 。

docker 镜像是基于联合文件系统的 。 简单描述一下联合文件系统 , 大概的意思就是说:它允许文件是存放在不同的层级上面的 , 但是最终是可以通过一个统一的视图 , 看到这些层级上面的所有文件 。

如上图所示 , 右边是从 docker 官网拿过来的容器存储的一个结构图 。

这张图非常形象地表明了 docker 的存储 , docker 存储也就是基于联合文件系统 , 是分层的 。 每一层是一个 Layer , 这些 Layer 由不同的文件组成 , 它是可以被其他镜像所复用的 。 可以看一下 , 当镜像被运行成一个容器的时候 , 最上层就会是一个容器的读写层 。 这个容器的读写层也可以通过 commit 把它变成一个镜像顶层最新的一层 。

推荐阅读