跳转至

裸金属、虚拟机与容器的区别

很多刚开始学习 Linux、Docker 和 Kubernetes 的同学,经常会产生类似的问题:

  • Ubuntu 应该安装在哪里?
  • VMware 和 Docker 是同一种东西吗?
  • Docker 是一个操作系统吗?
  • Kubernetes 为什么需要 Linux?
  • ESXi 到底是什么?
  • 我的电脑应该先安装什么?

如果你也有这些疑问,那么这篇文章就是为你准备的。

在开始安装各种系统和软件之前,我们需要先理解计算资源的运行层次,以及裸金属、虚拟机和容器之间的区别。


为什么要了解这些概念

对于很多新手来说,学习路线往往是这样的:

Ubuntu
Docker
Kubernetes

但是在真正开始部署后,很快就会发现新的问题:

Ubuntu 安装在哪里?
Docker 安装在哪里?
Kubernetes 又安装在哪里?

如果没有理解底层架构,很容易陷入各种概念混乱。

实际上,它们之间存在明确的层级关系:

裸金属、虚拟机与容器关系图

理解这条链路后,后续学习 Linux、Docker 和 Kubernetes 会容易很多。


什么是裸金属(Bare Metal)

裸金属(Bare Metal)指真实存在的物理服务器或者计算机。

例如:

  • Dell PowerEdge R740
  • HPE ProLiant DL380
  • 联想 ThinkSystem SR650
  • 台式电脑
  • 笔记本电脑

这些设备都属于裸金属设备。

裸金属架构

最简单的运行方式如下:

应用程序
    ↓
Linux / Windows
    ↓
物理服务器

例如:

MySQL
    ↓
Ubuntu Server
    ↓
Dell R740

应用直接运行在操作系统上,操作系统直接运行在硬件上。


裸金属的优势

性能最佳

应用程序直接使用硬件资源。

不存在虚拟化开销。

适用于:

  • 数据库
  • 大数据平台
  • AI 训练
  • 高性能计算

稳定性高

系统结构简单。

出现问题时定位相对容易。


裸金属的缺点

资源利用率低

例如:

64核 CPU
256GB 内存

如果只运行一个业务系统。

大量资源会被闲置。


扩展能力有限

增加新系统通常需要新增服务器。

成本较高。


什么是虚拟机(Virtual Machine)

为了提高服务器资源利用率,虚拟化技术应运而生。

虚拟化允许一台服务器同时运行多个操作系统。

例如:

Ubuntu
Debian
Rocky Linux
Windows Server

同时运行在一台服务器上。


什么是 Hypervisor

Hypervisor(虚拟机监控程序)负责管理硬件资源,并创建虚拟机。

常见产品包括:

  • VMware ESXi
  • Proxmox VE
  • Microsoft Hyper-V
  • KVM

它们的职责是:

  • 管理 CPU
  • 管理内存
  • 管理存储
  • 管理网络
  • 创建虚拟机

虚拟机架构

Ubuntu VM
Debian VM
Windows VM
        ↓
     ESXi
        ↓
物理服务器

每个虚拟机都拥有:

  • 独立操作系统
  • 独立磁盘
  • 独立网络
  • 独立资源配置

从使用体验来看,与真实服务器几乎没有区别。


什么是 ESXi

很多新手会误以为:

ESXi 是 Linux 系统。

实际上并不是。

ESXi 是 VMware 提供的企业级裸金属虚拟化平台。

安装完成后:

服务器
    ↓
ESXi
    ↓
多个虚拟机

ESXi 不负责运行业务。

它负责管理虚拟机。


什么是 Proxmox VE

Proxmox VE(简称 PVE)是目前 HomeLab 圈子非常流行的虚拟化平台。

特点:

  • 开源免费
  • 支持 KVM 虚拟机
  • 支持 LXC 容器
  • Web 管理界面
  • 社区活跃

对于家庭实验室用户来说:

PVE

通常是:

ESXi

之外最热门的选择。


什么是容器(Container)

随着云原生技术的发展。

容器技术开始流行。

最典型的代表就是:

Docker

容器与虚拟机最大的区别在于:

容器并不运行完整操作系统。


Docker 架构

容器 A
容器 B
容器 C
    ↓
Docker
    ↓
Linux
    ↓
服务器

Docker 运行在 Linux 上。

所有容器共享宿主机内核。


容器的优势

启动速度快

虚拟机:

30秒 ~ 数分钟

Docker:

数秒以内

资源占用低

虚拟机需要完整操作系统。

Docker 不需要。

因此可以在同样硬件资源上运行更多实例。


易于迁移

Docker 镜像可以快速部署到不同服务器。

非常适合现代应用交付。


Docker 与虚拟机的区别

虚拟机与容器对比图

对比项目 虚拟机 Docker
操作系统 每个实例独立系统 共享宿主机内核
启动速度 慢 快
资源占用 高 低
部署效率 一般 高
隔离性 更强 较强
使用场景 系统级隔离 应用级部署

Kubernetes 又是什么

Docker 解决的是:

如何运行容器

Kubernetes 解决的是:

如何管理大量容器

例如:

100台服务器
5000个容器

如果全部手工管理:

  • 容器启动
  • 容器重启
  • 服务发现
  • 负载均衡
  • 滚动更新

几乎无法完成。

因此 Kubernetes 成为了容器编排标准。


它们之间是什么关系

企业环境最常见的部署架构如下:

物理服务器
        ↓
ESXi
        ↓
Ubuntu 虚拟机
        ↓
Docker
        ↓
Kubernetes
        ↓
业务应用

这也是许多企业数据中心和云平台的典型架构。


HomeLab 应该怎么选择

如果你正在搭建自己的家庭实验室,可以参考以下方案。

入门方案

Windows
    ↓
VMware Workstation
    ↓
Ubuntu

适合:

  • Linux 学习
  • Docker 学习
  • Kubernetes 学习

进阶方案

ESXi
    ↓
Ubuntu
    ↓
Docker

适合长期实验环境。


企业模拟方案

ESXi
    ↓
vCenter
    ↓
Ubuntu
    ↓
Kubernetes

适合运维工程师和平台工程师学习。


总结

裸金属、虚拟机和容器并不是竞争关系,而是不同层次的技术方案。

简单来说:

裸金属
    ↓
虚拟化
    ↓
操作系统
    ↓
容器
    ↓
Kubernetes

对于绝大多数学习者来说,推荐按照以下顺序学习:

  1. Linux 基础
  2. VMware 或 Proxmox
  3. Docker
  4. Kubernetes

掌握这条学习路线后,再进入云原生和平台工程领域会更加顺畅。


推荐阅读