type-1:运行在裸硬件上的虚拟机,虚拟机中安装操作系统
type-2:裸硬件上运行操作系统,操作系统上安装虚拟虚拟机上运行,操作系统,
程序不再所以一个独立的内核,而共享同一个内核
两颗树,进程树和根文件系统树
用户空间需要看到的组件UTS--MOUNT--IPC--PID--USE--NET,在容器内把这些虚拟出来,进程就觉得自己是唯一
LINUX内核通过一种名称空间的机制,对他们UTS--MOUNT--IPC--PID--USE--NET的虚拟化原生支持,namespaces,通过系统调用,clone()克隆,创建进程,setns()将进程放在指定的名称空间内,在家长chroot切换根文件系统,在实现容器
Control Groups(cgroups)资源分派
可以实现对一个系统之上索要运行的进程,给他分门别类的分分类,每一类就叫一个组,叫控制组
chroot--namespaces--cgroups这是最重要的组件,而这三种在内核3.8版本以后天然实现
原文:https://www.cnblogs.com/hao-ran/p/11480312.html