linux 容器(LXC) 第3章 命名空间(namespace) 简介

转:https://blog.csdn.net/caoshuming_500/article/details/51682776

1. 命名空间是什么

命名空间简单的来说提供的就是全局资源的一种抽象,将资源放到不同的命名空间中,各个命名空间中的资源是相互隔离的。

2. namespace 的分类

namespace 分成了5类,分别是UTS/IPC/PID/NS/Net; 这些命令空间可以组合使用,创建一个namespace 也是在clone 的库函数中设置一个参数(每类namespace 有自己的参数)即可新建新的namespace;

  • 容器是否包括所有的namespace

LXC 任何一个容器可以创建0-5个namespace,来完成对不同全局资源的隔离;一般我们用的容器中是5中namespace 全部新建来完成容器的彻底虚拟化隔离


3. namespace 的5个分类

  • UTS (uname)

 主要是用来进行hostname的资源隔离,在不同的UTS 的namespace 里面hostname 可以名字一样,相互之间透明、不冲突;

  • PID(进程pid)

主要是用来进行进程资源的隔离,在不同的PID的namespace 里面pid 相同的2个进程可以存在,而且相互之间透明、不冲突

  • IPC(inter-process-connection 进程之间通信) 

主要是用来进行进程直接通信的隔离的,这个主要的作用是?(现在还不确定:自己理解是隔离进程直接直接通信,二用容器或者pod 来通信)

  • NS(mnt) 文件系统隔离

容器在chroot 之后限制了进程只能读写指定的目录,NS的namespace 则是文件的挂载和卸载只跟namespace 有关系,跟其他的namespace 是透明的

  • NET 网络隔离

借助namespace 可以进行网络接口的隔离,达到一个容器单独一个“网卡”的效果;不同的namespace 的网卡的带宽相互不影响

猜你喜欢

转载自blog.csdn.net/caofengtao1314/article/details/81381405