/knowledge/notes/vms-vs-containers
概念笔记 · ML
虚拟机与容器
Systems
- 学于
- 集群与云计算COMP90024
- 时间
- 2023 年第一学期
- 应用于
- Social Sense
- 阅读 / 复习
- 约 4 分钟阅读2026-10-15
虚拟机在模拟硬件上运行完整的操作系统。容器共享主机内核并使用命名空间和 cgroups 隔离进程。权衡:虚拟机更重但更隔离;容器更轻但不太安全。
01
基本想法
虚拟机监控程序(裸金属上的 Type 1,主机操作系统上的 Type 2)为每个虚拟机模拟硬件。每个虚拟机运行自己的内核、init 系统和用户空间。启动时间是秒到分钟。磁盘映像是千兆字节。容器共享主机内核并运行单个进程树。Docker 使用层(基础操作系统 + 应用依赖项)构建映像。启动时间是毫秒。映像是数十到数百兆字节。
虚拟机提供更强的隔离:受损的客户机无法直接访问主机内核。容器依赖于内核功能(cgroups、命名空间),这些功能存在特权升级错误。对不受信任的工作负载使用虚拟机;对密度和速度使用容器。
在实践中,虚拟机适合多租户环境、遗留应用和需要不同操作系统的场景。容器适合微服务、持续集成和水平扩展。Kubernetes 编排容器,OpenStack 编排虚拟机。两者可以组合:在虚拟机内运行容器以平衡隔离和密度。
02
数学
03
动手试
Application
Guest OS
Hypervisor
Host OS
Hardware
VMs: Each guest has its own OS. Higher isolation, bigger overhead.
Virtual Machine architecture
04
我在哪用到它
05
容易出错的地方
06
参考资料
COMP90024(2023)中涵盖。在墨尔本研究云虚拟机上使用 Docker 和 Ansible 部署的实践经验。