Docker依赖的Linux内核特性
- Namespaces:命名空间
- Control groups(cgroups)控制组
Namespaces 命名空间的概念:
相当于编程语言: 封装的概念到代码隔离的作用。
同时也相当于操作系统: 系统资源的隔离、进程、网络、文件系统。容器会让程序在自己这个虚拟的小环境运行不会受到其他影响。
Namespaces 命名空间的作用:
- PID(process ID) 进程隔离。
- NET(Network) 管理网络接口。
- IPC(InterProcess Communication) 管理跨进 程通信的访问。
- MNT(Mount) 管理挂载点。
- UTS (Unix Timesharing System) 隔离内核和版本标识。
Control groups(cgroups) 控制组基本了解:
- 用来分配资源
- 来源于google
- 内核版本 linux kernel 2.6.24@2007及以上版本才出现
Control groups(cgroups) 控制组的作用
- 资源限制
- 优先级设定
- 资料计量
- 资源控制
Docker容器的能力
- 文件系统隔离: 每个容器都有自己的root文件系统。
- 进程隔离: 每个容器都运行在自己的进程环境中。
- 网络隔离: 容器见的虚拟网络接口和IP地址都是分开的。
- 资源隔离和分组: 使用cgroups将CPU和内存之类的资源独立分配给每个Docker 容器。