容器技术演进及核心技术
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 │ 数据报文类别标识符
└──────────────┴──────────────────────────────────────────────────────