PaaS提供了应用托管,核心组件是应用的打包和分发机制。
docker使用Cgroups和Namespace机制创建出来的隔离环境。这种机制直接打包了应用运行所需要的整个操作系统,从而保证了本地环境与云端环境高度一致,避免了用户通过试错来匹配两种不同环境之间差异的痛苦过程。
容器的核心功能就是通过约束和修改进程的动态表现,从而为其创造出一个边界,Cgroups技术是用来制造约束的主要手段,Namespace是用来修改进程时图的主要方法。
namespace 机制是Linux中创建新进程时,增加一个新的参数CLONE_NEWPID,新创建的进程将会看到一个全新的进程空间,在该进程空间;哦,它的pid 为1,但其实在宿主机里,这个进程的pid还是真实的值。Linux系统中提供了Mount、UTS、IPC、Network和User这些Namespace,用于对各种不同进程上下文进行‘障眼法’操作。
所以说,容器其实是一种特殊的进程,与宿主机之间使用的还是同一个操作系统的内核。
虚拟机与容器的区别:
Linux Cgroups 是Linux内核中用来为进程设置资源限制的一个重要功能。主要是用来限制一个进程子能够使用的资源上限,包括CPU、内存、磁盘、网络带宽等。此外也可以对进程进行优先级设置,审计,以及将进程挂起和恢复等操作。
Linux中,Cgroups给用户暴露出来的操作接口是文件系统,它以文件和目录的方式组织在操作系统的/sys/fs/cgroup 路径下。