docker依赖的内核特性
docker依赖于Linux的两个内核特性:
- Namespaces:命名空间
- Control groups(cgroups):控制组
Namespaces
命名空间提供了一种系统资源的隔离,包括了文件系统、网络、进程等。docker有5种命名空间:
- PID:进程隔离
- NET:网络管理接口
- IPC:管理跨进程通信访问
- MNT:管理挂载点
- UTS:隔离内核和版本标识
Control groups
这是Linux内核提供的一种可以限制,记录,隔离物理进程组的机制。他提供了以下功能:
- 资源限制
- 优先级设定
- 资源计量
- 资源控制
docker容器能力
Namespaces和Control groups带给了容器下面的能力:
- 文件系统的隔离:每个容器都有自己的root文件系统
- 进程隔离:每个容器都运行在自己的进程环境中
- 网络隔离:每个容器间虚拟网络接口和ip地址都是分开的
- 资源隔离和分组:Control groups可以将CPU和内存之类的资源独立分配给每个docker容器