type
status
date
slug
summary
tags
category
icon
password
1. 架构层级
- Docker:
- 基于容器的虚拟化。
- 运行在宿主操作系统(Host OS)之上,共享宿主操作系统的内核。
- 容器包含应用程序及其依赖,但不包括操作系统内核。
- 虚拟机:
- 基于硬件的虚拟化。
- 运行在虚拟化管理程序(Hypervisor)之上,Hypervisor可以是Type 1(裸机Hypervisor,如VMware ESXi)或Type 2(宿主机Hypervisor,如VirtualBox)。
- 每个虚拟机包含完整的操作系统,包括内核和应用程序。
2. 资源占用
- Docker:
- 容器共享宿主操作系统内核,启动和运行速度较快。
- 占用较少的资源,因为不需要额外的操作系统开销。
- 虚拟机:
- 每个虚拟机运行一个完整的操作系统,启动时间较长。
- 资源开销大,每个虚拟机需要独立的操作系统资源。
3. 启动速度
- Docker:
- 启动速度非常快,通常在几秒钟内完成。
- 虚拟机:
- 启动速度较慢,通常需要几分钟,因为需要启动一个完整的操作系统。
4. 隔离性
- Docker:
- 容器之间以及容器与宿主操作系统之间的隔离相对较弱。
- 依赖于操作系统级别的隔离(如cgroups和namespaces)。
- 虚拟机:
- 隔离性强,每个虚拟机运行在独立的操作系统中。
- 提供硬件级别的隔离,安全性更高。
5. 可移植性
- Docker:
- 容器镜像在不同的环境中具有高度的可移植性。
- 适用于微服务架构和持续集成/持续部署(CI/CD)流程。
- 虚拟机:
- 虚拟机镜像也具有一定的可移植性,但由于包含完整的操作系统,体积较大,移动和复制起来比较麻烦。
6. 适用场景
- Docker:
- 适用于需要快速启动、快速扩展和高度可移植的场景。
- 常用于开发、测试、CI/CD以及微服务架构。
- 虚拟机:
- 适用于需要强隔离、安全性要求高、需要运行不同操作系统的场景。
- 常用于传统的企业应用部署、大型分布式系统以及需要多种操作系统环境的开发和测试。

- Author:Gweek
- URL:https://www.myla.eu.org/article/docker-vs-virtual-machine-differences
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!