Linux中的分离式命名空间体验(linux 的命名空间)
分离式命名空间(隔离空间)技术,又称为“namespaces”,是Linux系统中的一项安全特性,它是一种“把”系统资源进行“瓶装”的技术。他能够让我们把一些运行在同一个 OS 内的进程分组,使得每组进程看到的系统资源独立。
使用系统命名空间,就能够实现容器技术,将每个容器看做一个完整的系统,但是运行在同一个内核上,容器中安装软件、框架等资源,容器之间的资源完全隔离,也可以引用 OS 中的共享资源。
分离式命名空间为操作系统提供了层级之间的虚拟化安全性,使管理设备的复杂度减小,尤其是提高宿主机和容器之间的隔离性和安全策略。
Linux 里有 6 种分离命名空间,分别是uts 名称空间 ,ipc 名称空间,cgroup 名称空间,net 名称空间,pid 名称空间,mnt 名称空间。
其中,最重要的名称空间有mnt :挂载点名称空间 ,用来存放挂载点,pid :进程名称空间 ,每个进程会有自己的pid,uts :主机和域名名称空间 ,可以实现修改主机名和域名,net :网络名称空间,可以改变 IP 地址、子网掩码和路由表,cgroup :控制组名称空间,分配进程的资源,可以限制进程的资源使用,ipc :消息队列名称空间,用于进程间通信。
我们可以使用下面的代码来查看本机上的分离式命名空间:
“`shell
root@server# ls -l /proc/self/tasks/*/ns | grep -v ‘pid:’
lrwxrwxrwx 1 root root 0 Aug 20 10:00 /proc/self/tasks/4/ns/mnt -> mnt:[4026526520]
lrwxrwxrwx 1 root root 0 Aug 20 10:00 /proc/self/tasks/4/ns/ipc -> ipc:[4026526488]
lrwxrwxrwx 1 root root 0 Aug 20 10:00 /proc/self/tasks/4/ns/uts -> uts:[4026525880]
lrwxrwxrwx 1 root root 0 Aug 20 10:00 /proc/self/tasks/4/ns/net -> net:[4026526480]
lrwxrwxrwx 1 root root 0 Aug 20 10:00 /proc/self/tasks/4/ns/cgroup -> cgroup:[4026525896]
lrwxrwxrwx 1 root root 0 Aug 20 10:00 /proc/self/tasks/4/ns/pid -> pid:[4026526512]
总之,Linux 中的分离式命名空间技术对我们实现容器技术具有重要意义。分离式命名空间能够在同一操作系统中虚拟安全空间,让各个容器间相互隔离,容器可以在隔离的空间中使用 OS 中的共享资源,提升了容器的资源利用率。