容器技术演进及核心技术

1.容器技术演进

目的:提高隔离性、资源使用效率

虚拟化演进路线:
┌─────────────────────────────────────────────────────────────────
│  传统虚拟化 → 容器虚拟化                                         
├─────────────────────────────────────────────────────────────────
│  Type-I (裸金属): VMware ESXi, KVM                              
│  Type-II (宿主):  VirtualBox, VMware Workstation                 
│                                                                         
│  容器虚拟化: jail/vserver(chroot) → LXC → Docker                  
│                                                                         
│  Docker 核心技术栈:                                                 
│  lxc → libcontainer → runC                                        
│                                                                         
│  OCI (Open Container Initiative):                                  
│  • 由Linux基金会2015年创立                                        
│  • Runtime Specification (runC)                                    
│  • Image Specification                                             
└─────────────────────────────────────────────────────────────────

2.Linux容器核心技术

2.1 Namespaces(命名空间)— 隔离

6种命名空间,实现进程级别的隔离:

┌──────────────────┬─────────────────────────────────────────────
│    命名空间       │              隔离内容                       
├──────────────────┼─────────────────────────────────────────────
│ Mount            │ 挂载点(文件系统视图隔离)                     
│ UTS              │ 主机名与域名                                 
│ IPC              │ 信号量、消息队列、共享内存                    
│ PID              │ 进程号(进程隔离)                           
│ Network          │ 网络设备、网络栈、端口等       
│ User             │ 用户和组                             
└──────────────────┴─────────────────────────────────────────────

2.2 Cgroups(控制组)— 资源限制

┌─────────────────────────────────────────────────────────────────────
│                        Cgroups 子系统                               
├──────────────┬──────────────────────────────────────────────────────
│    子系统     │                      功能                           
├──────────────┼──────────────────────────────────────────────────────
│ blkio        │ 块设备IO限制                                         
│ cpu          │ CPU时间分配                                          
│ cpuacct      │ CPU资源使用报告                                       
│ cpuset       │ 多处理器平台CPU集合绑定                               
│ devices      │ 设备访问控制                                        
│ freezer      │ 挂起或恢复任务                                       
│ memory       │ 内存用量限制及报告                                     
│ perf_event   │ 统一性能测试                                         
│ net_cls      │ 数据报文类别标识符                                     
└──────────────┴──────────────────────────────────────────────────────