下面给出其他namespace的实验性命令,你可以实际操作一下。
3. 试验一下
- unshare –mount –fork /bin/bash
创建mount namespace,并在每个不同的环境中,使用不同的挂载目录。
- unshare –uts –fork /bin/bash
uts可以用来隔离主机名称,允许每个namespace拥有一个独立的主机名,你可以通过hostname命令进行修改。
- unshare –ipc –fork /bin/bash
IPC Namespace 主要是用来隔离进程间通信的。Linux的进程间通信,有管道、信号、报文、共享内存、信号量、套接口等方式。使用了IPC命名空间,意味着跨Namespace的这些通信方式将全部失效!不过,这也正是我们所希望的到的。
- unshare –user -r /bin/bash
用户命名空间,就非常好理解了。我们可以在一个Namespace中建立xjjdog账号,也可以在另外一个Namespace中建立xjjdog账号,而且它们是相互不影响的。
- unshare –net –fork /bin/bash
net namespace,这个就非常有用了。它可以用来隔离网络设备、IP 地址和端口等信息。
可以看到,通过各种Namespace,Linux能够对各种资源进行精细化的隔离。Docker本身也是一个新瓶装旧酒的玩具。Docker的创新之处,在于它加入了一个中央仓库,并封装了很多易用的命令。
你可能会发现,到目前为止,我们并没有对Cpu和内存的资源使用进行隔离,也没有对应的Namespace来解决这些问题。
资源限制的功能,是使用Cgroups进行限额配置来完成的,和Namespace没什么关系。我们将在后面的文章,介绍Cgroups这项技术。