先来认识一个命令行工具 unshare。unshare 是 util-linux 工具包中的一个工具,CentOS 7 系统默认已经集成了该工具,使用 unshare 命令可以实现创建并访问不同类型的 Namespace。
查看所有命名空间,type是命名空间类型
Mnt命名空间
创建一个mnt命名空间
#新建一个 Mount Namespace
root@docker-demo ~]# unshare --mount --fork /bin/bash
这个就创建另一个新进程bash 并且是在一个新的命名空间中,然后继续在这个命令行中执行 mnt操作都是在新的命名空间中操作的。在这个新的命名空间挂载了目录之后 新创建文件,在原主机上看不到。
通过查看当前进程的所有命名空间,看到新进程中 mnt类型的命名空间为: xxx2594
然后打开另外一个bash 空间查看,
可以看到两个命名空间是不一样的。
然后回到新的命名空间bash 中。执行命令
mkdir /tmp/tmpfs 创建一个目录
mount -t tmpfs -o size=20m tmpfs /tmp/tmpfs 把此目录挂载到一个内存文件系统中,临时的,退出这个进程之后 这个文件系统挂载点也就没有了
进入tmpfs 目录创建一个文件
touch ee.txt,然后目录下有个文件 ee.txt 然后查看 主机上是否有这个文件
原来主机上的看看,
原主机上创建一个文件 在新的命名空间进程挂载目录下也看不到
新进程命名空间中:
没有,说明文件目录进行了隔离。 其他类型的命名空间介绍看: CSDN
整理的命名空间的一些指令
使用 lsns
命令 查看所有命名空间
ls -l /proc/<PID>/ns 查看特定进程的命名空间
看到两个命名空间是不一样的