Linux 容器化核心原理:Namespace 隔离与 cgroups 资源控制
虚拟化、容器化概述
**物理机:**实际的硬件服务器,包含 CPU、内存、硬盘、网卡等物理组件,直接运行操作系统(如 Linux、Windows Server)。
**虚拟化:**通过 Hypervisor(虚拟化层)在物理机上模拟出多个独立的逻辑计算机 - '虚拟服务器'(VM),每个 VM 拥有独立的操作系统,应用程序在相互独立的空间内运行。
**容器化:**轻量级的虚拟化技术,又称操作系统层虚拟化。将操作系统内核虚拟化,允许用户空间软件实例被分割成几个独立的单元,在内核中运行。Docker 是现今容器技术的事实标准。
优势
- **提升硬件资源利用率:**传统物理机部署应用时往往一台机器只跑一个应用,导致资源利用率低。虚拟化允许在一台物理机上运行多个虚拟机,通过动态分配资源显著提高利用率。
- **简化环境一致性管理:**开发、测试、生产环境的差异是经典痛点。虚拟化可以通过'虚拟机镜像'固化环境配置,团队使用相同的镜像,避免因环境差异导致的部署失败。
- **快速弹性扩展:**对于后端服务,流量波动可能很大。虚拟化支持快速克隆虚拟机、动态调整资源,配合负载均衡可以快速扩容或缩容。
- **沙箱安全与资源控制:**通过'隔离与权限控制'限制程序行为的安全机制,防止不可信代码对系统资源、敏感数据造成未授权访问或破坏。
容器虚拟化实现原理
主机虚拟化(硬件级虚拟化)
核心是在物理服务器上安装一个虚拟化层来实现,通过 Hypervisor 对物理硬件进行抽象和模拟,让多个独立的操作系统能共享一台物理机的硬件资源。
- Hypervisor 直接运行在物理硬件上(Type 1,如 KVM、VMware ESXi),或运行在宿主操作系统上(Type 2,如 VMware Workstation)。
- 它会虚拟出 CPU、内存、磁盘、网络卡等硬件资源,每个虚拟机认为自己在独占这些'虚拟硬件'。
- Hypervisor 负责调度物理资源给不同虚拟机,同时严格隔离各虚拟机。
Namespace
**Namespace(命名空间)**是 Linux 内核提供的一种资源隔离技术,核心作用是让不同的进程'看到'不同的系统资源视图,从而实现'逻辑上的独立环境'。
Linux 内核提供了多种 Namespace,分别隔离不同类型的系统资源:
| namespace | 系统调用参数 | 被隔离的全局系统资源 |
|---|---|---|
| UTS | CLONE_NEWUTS | 主机名和域名 |
| IPC | CLONE_NEWIPC | 信号量、消息队列和共享内存 |
| PID | CLONE_NEWPID | 进程编号 |
| Network | CLONE_NEWNET | 网络设备、网络栈、端口等 |
| Mount | CLONE_NEWNS | 文件系统挂载点 |
| User | CLONE_NEWUSER | 用户和用户组 |
基础命令
1. dd 命令(数据复制与转换)
作用:读取、转换并输出数据,常用于生成镜像、格式化测试等。
语法:
dd if=输入文件 of=输出文件 [参数]
关键参数:
if:输入源(如/dev/zero生成空数据)。of:输出目标(如镜像文件)。


