容器通常以兆字节为度量单位。它们封装的内容大小不会超过一个应用及其运行所需的所有文件,并且通常用于封装执行特定任务的单个功能(称为微服务)。容器因其轻量级特性及共享的操作系统(OS),非常便于在多个环境之间移动。
虚拟机则一般以千兆字节为度量单位。它们通常包含自己的操作系统(OS),因而能够一次执行多个资源密集型功能。由于虚拟机的可用资源大大增加,因此它们可以抽象、分离、复制和模拟整个服务器、操作系统、台式机、数据库和网络。
- 主要区别
需要注意的是,容器必须与底层操作系统兼容。相比虚拟机,容器最适合用于:
- 构建云原生应用
- 封装微服务
- 拓展 DevOps 或 CI/CD 实践
- 在共享同一操作系统的多样化 IT 环境中移动可扩展的 IT 项目
虚拟机最适合用于:
- 存放传统的单体式工作负载
- 隔离存在风险的开发周期
- 置备基础架构资源(如网络、服务器和数据)
- 在另一个操作系统内运行不同的操作系统(例如在 Linux 上运行 Unix)
参考资料:
- https://www.redhat.com/zh/topics/containers/containers-vs-vms