命名空间提供了一种不同的解决方案,只使用一个内核在一台物理计算机上运作,所有全局资源都通过命名空间抽象起来。这使得可以将一组进程放置到一个命名此汪空间中,各个命名空间彼此隔离。
隔离用户和group ID
每个命名空间内上的用户跟宿主主机上不在一个命名空间 同进程 ID 一样,用户 ID 和组 ID 在命名空间内外是不一样的,并且在不同命名空间内可以存在相同的 ID
在 Linux 中,网络名字空间可以被认为是隔离的拥有单独网络栈(网卡、路由转发表、iptables)的环境。网络名字空间经常用来隔离网络设备和服务,只有拥有雹谨同样网络名字空间的设备,才能看到彼此。
从逻辑上说,网络命名空间是网络栈的副本,有自己的网络设备、路由选择表、邻接表、Netfilter表、网络套接字、网络procfs条目、网络sysfs条目和其他网络资源。
从系统的角度来看,当通过clone()系统调用创建新进程时,传递标志CLONE_NEWNET将在新进程中创建一个全新的网络命名空间。
从用户的角度来看,我们只需使用工具ip(package is iproute2)来创建一个新的持久网络命名空间。
为了让另一个主机可以访问本主机上的某个网络命名空间中定森肆仔义的IP地址,可以将宿主机的物理网卡和虚拟网卡做桥接,这样就可以和虚拟网卡通信。
抽象的概念。看了一下别人的解析,写一下:从Linux 2.6.24版的内核开始,Linux 就支持6种不同类型的命名空间。(具体也没记住)
命名空间是一种轻量级的虚拟化手段;
传统的虚拟化软件,是虚拟化多个不同的 *** 作系统,对共享资明祥迹源的限制很大;
通过提供命名空间,可以让进程与进程之间,用户与用户之间激并彼此看不到对宴蠢方。
命名空间,相当于容器。
命名空间,本质上建立了系统的不同视图。
在用汇编语言或高级语言编写的程序中,是通过符号名来访问子程序和数据的。把程序中符号名的集合叫做“名字空间”。汇编语言源程序经过汇编,或者高级语言源程序经过编译,得到的目标程序是以0作为参凳配考地址的模块。然后多个目标模块由连接程序连接成一个具有统一地址的装配模块,以便最后装入内存中执行。把目标模块中的地址称为相对枣芦指地址,而把相对地址哗扮的集合叫做“地址空间”。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)