从谁的角度看
| 对比维度 | Docker 容器 共享内核的隔离进程 | 虚拟机 完整操作系统 + 虚拟硬件 |
|---|---|---|
| 原理 | ||
| 隔离层级 | Namespace + Cgroup 隔离进程 | Hypervisor 虚拟硬件,跑独立内核 |
| 操作系统 | 共享宿主机内核 | 每个虚拟机一个完整 OS |
| 性能 | ||
| 启动时间 | 秒级甚至毫秒级 | 分钟级 |
| 资源开销 | MB 级,接近原生性能 | GB 级,有虚拟化损耗 |
| 单机密度 | 几十到上百个 | 几个到十几个 |
| 安全 | ||
| 隔离强度 | 较弱,内核漏洞可能逃逸 | 强,硬件级隔离 |
| 实践 | ||
| 镜像/模板 | 分层镜像,仓库分发,秒级拉取 | 系统镜像,体积大,分发慢 |
| 典型用途 | 微服务、CI/CD、开发环境统一 | 多租户隔离、异构系统、强安全要求 |
点某一行可以高亮该维度,方便逐条横向读;移动端左右滑动查看全部列。
选型建议
Docker 容器
绝大多数应用部署场景用它,快、省、环境一致。
虚拟机
需要强隔离、跑不同内核、或合规要求时用它;云上两者常常叠加使用。
一句话结论
容器不是「更轻的虚拟机」,它根本不虚拟硬件。需要强隔离时虚拟机仍然不可替代。