容器 vs 虚拟机
学习目标
- 理解两者架构差异
- 知道各自适用场景
架构对比
虚拟机:
┌─────────────────────────────────┐
│ App 1 │ App 2 │
│ Bins │ Bins │
│ Guest OS │ Guest OS │ ← 每个 VM 完整 OS
├─────────────────────────────────┤
│ Hypervisor │ ← 虚拟化层
├─────────────────────────────────┤
│ Host OS │
│ Hardware │
└─────────────────────────────────┘
Docker 容器:
┌─────────────────────────────────┐
│ App 1 │ App 2 │ App 3 │
│ Bins │ Bins │ Bins │
├─────────────────────────────────┤
│ Docker Engine │ ← 容器运行时
├─────────────────────────────────┤
│ Host OS │
│ Hardware │
└─────────────────────────────────┘
关键区别
| 方面 | 虚拟机 | Docker 容器 |
|---|---|---|
| 隔离级别 | 硬件级 | 进程级 |
| 启动时间 | 分钟 | 秒 |
| 资源占用 | GB 级 | MB 级 |
| 性能 | 有损耗 | 接近原生 |
| 镜像大小 | GB 级 | MB 级 |
| 安全性 | 更强 | 较弱(共享内核) |
适用场景
虚拟机适合:
- 需要运行不同 OS(Windows 上跑 Linux)
- 强隔离需求(多租户)
- 运行内核模块
Docker 适合:
- 应用打包部署
- 微服务架构
- CI/CD 流水线
- 快速开发环境
小结
| 选虚拟机 | 选 Docker |
|---|---|
| 需要不同 OS | 同一 OS 多应用 |
| 强隔离 | 快速部署 |
| 运行内核模块 | 轻量级环境 |
练习编辑器
bash
Loading...