Skip to content
← ML

/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
systems概念的交互式演示

04

我在哪用到它

05

容易出错的地方

06

参考资料

COMP90024(2023)中涵盖。在墨尔本研究云虚拟机上使用 Docker 和 Ansible 部署的实践经验。