docker底层的 2 个核心技术分别是 Namespaces 和 Control groups
namespace:Linux命名空间,实现进程间信息的独立与隔离需要在操作系统内核层面进行实现的
Mount Namespaces:挂载命名空间,用于隔离挂载目录
http://dockerone.com/article/82
为什么要通过Mount namespace隔离挂载目录?
如果说隔离在某个namespace中的程序,可所挂载的目录进行修改,那么另一个nemaspace中运行的程序也能察觉到,这样就在无形之中影响了其他Namespace中程序的运行,显然达不达这样的隔离效果;
所以要进行程序之间的隔离,
首先是要把程序所使用的挂载目录进行隔离,让不同的Nemaspaces拥有独立挂载结构,而程序对挂载信息的修改,也不会影响到其他的namespace中程序的运行;
UTS Namespaces:UTS命名空间,用于隔离主机及网络域等信息
http://dockerone.com/article/76
通过UTS命名空间,可以为不同的Namespaces设置不同的主机名和网络域 能够简单的将程序隔离到一个独立的网络命名空间
IPC Namespaces:用于隔离进程之间的调用,也就是隔离进程之间的通信;
http://dockerone.com/article/79
主要针对系统信号量,消息队列以及共享内存