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

第一个是 mout namespace 。 mout namespace 就是保证容器看到的文件系统的视图 , 是容器镜像提供的一个文件系统 , 也就是说它看不见宿主机上的其他文件 , 除了通过 -v 参数 bound 的那种模式 , 是可以把宿主机上面的一些目录和文件 , 让它在容器里面可见的;

第二个是 uts namespace , 这个 namespace 主要是隔离了 hostname 和 domain;

第三个是 pid namespace , 这个 namespace 是保证了容器的 init 进程是以 1 号进程来启动的;

第四个是网络 namespace , 除了容器用 host 网络这种模式之外 , 其他所有的网络模式都有一个自己的 network namespace 的文件;

第五个是 user namespace , 这个 namespace 是控制用户 UID 和 GID 在容器内部和宿主机上的一个映射 , 不过这个 namespace 用的比较少;

第六个是 IPC namespace , 这个 namespace 是控制了进程兼通信的一些东西 , 比方说信号量;

第七个是 cgroup namespace , 上图右边有两张示意图 , 分别是表示开启和关闭 cgroup namespace 。 用 cgroup namespace 带来的一个好处是容器中看到的 cgroup 视图是以根的形式来呈现的 , 这样的话就和宿主机上面进程看到的 cgroup namespace 的一个视图方式是相同的;另外一个好处是让容器内部使用 cgroup 会变得更安全 。

推荐阅读