Namespace 技术
Namespace 并不是一个新技术,它是Linux操作系统默认提供的API,包括 PID Namespace、Mount Namespace、IPC Namespace、Network Namespace等等。
以 PID Namespace 为例,它的功能是可以让我们在创建进程的时候,告诉Linux系统,我们要创建的进程需要一个新的独立进程空间,并且这个进程在这个新的进程空间里的PID=1,也就是说,这个进程只看得到这个新进程空间里的东西,看不到外面宿主机环境里的东西,也看不到其它进程(不过这只是一个虚拟空间,事实上这个进程在宿主机里PID该是什么还是什么,没有变化,只不过在这个进程空间里,该进程以为自己的PID=1)。
另外,Network Namespace 的技术原理也类似,让这个进程只能看到当前Namespace空间里的网络设备,看不到宿主机真实情况。Namespace 技术其实就是修改了应用进程的视觉范围,但应用进程的本质却没有变化。
Cgroups 技术
Cgroup 其功能就是限制进程组所使用的最大资源(这些资源可以是 CPU、内存、磁盘等等)。
Namespace 技术只能改变一下进程组的视觉范围,并不能真实的对资源做出限制。那么为了防止容器(进程)之间互相抢资源,甚至某个容器把宿主机资源全部用完导致其它容器也宕掉的情况发生。因此,必须采用 Cgroup 技术对容器的资源进行限制。
Cgroup 技术也是Linux默认提供的功能,在Linux系统的 /sys/fs/cgroup 下面有一些子目录 cpu、memory等,Cgroup技术提供的功能就是可以基于这些目录实现对这些资源进行限制。Cgroup 对其它内存、磁盘等资源也是采用同样原理做限制。
以上是关于docker容器通过什么隔离的介绍。西部数码的容器云产品基于docker技术实现,拥有上万Linux镜像,灵活强大,可弹性扩展,自由轻松搭建私有网络,支持按带宽或按流量,私有网络免费,性价比高,容器云产品链接 https://www.west.cn/paas/container/