1.什么是容器
容器其实是一种沙盒技术(sandbox)。顾名思义,沙盒就是能够像一个集装箱一样,把你的应用“装”起来的技术。这样,应用与应用之间,就因为有了边界而不至于相互干扰;而被装进集装箱的应用,也可以被方便地搬来搬去,这就是 PaaS 最理想的状态。
2.关于“边界”
当程序运行起来,它就从磁盘上的二进制文件,变成了计算机
内存中的数据
、寄存器里的值
、堆栈中的指令
、被打开的文件
,以及各种设备的状态信息
的一个集合:进程。对于进程来说,它的静态表现就是程序,平常都安安静静地待在磁盘上;而一旦运行起来,它就变成了计算机里的数据和状态的总和,这就是它的动态表现。
容器技术的核心功能,就是通过约束和修改进程的动态表现,从而为其创造出一个“边界”
-
Cgroups 技术是用来制造约束的主要手段(
资源隔离
) -
Namespace 技术则是用来修改进程视图的主要方法(
视图隔离
)
3.Namespace机制
当我们在宿主机上运行了一个 /bin/sh 程序,操作系统都会给它分配一个进程编号&