微虚拟机 smolvm 与Docker 容器比较

一、概述

molvm 是一个 CLI 工具,跨平台运行微 VM。基于 libkrun VMM,冷启动 <200ms,兼容 OCI 容器镜像,支持 macOS/Linux/Windows,产出 .smolmachine 便携包。面向沙箱执行、开发隔离和可移植工作负载

smolmachines 的微虚拟机 smolvm(基于 libkrun,与 Podman 共用底层)、podlet(compose 转 quadlet 的工具)、hetzner-podman-bunjs-deploy 模板项目等

molvm 比 Docker 容器隔离更强(独立内核),比 QEMU 虚拟机启动更快(<200ms),比 Firecracker 支持更多平台(macOS/Windows)。

二、技术架构

smolvm 的工作方式:

  1. 硬件虚拟化层------使用平台原生虚拟化后端:macOS 的 Hypervisor.framework、Linux 的 KVM、Windows 的 Windows Hypervisor Platform(WHP)
  2. VMM (Virtual Machine Monitor)------基于 libkrun,一个库形式的轻量 VMM,无需 QEMU 那样的独立守护进程
  3. 自定义内核 ------使用 libkrunfw 提供微 VM 专用内核,只包含运行容器化工作负载所需的最小内核模块
  4. 镜像格式------OCI 兼容,可以直接使用 Docker Hub / ghcr.io 上的任何容器镜像,无需额外转换
  5. 弹性内存------通过 virtio balloon 实现内存弹性分配,宿主机只提交 VM 实际使用的内存量,空闲时自动回收

三、解决问题

容器不够隔离

容器共享宿主内核,虽然轻量,但内核漏洞(如 Dirty Pipe、Dirty COW)可以突破 namespace 隔离。smolvm 给每个工作负载一个独立内核,硬件隔离由 Hypervisor.framework(macOS)、KVM(Linux)或 Windows Hypervisor Platform(Windows)保证

QEMU 太重了

QEMU 启动 15-30 秒,镜像管理复杂,不适合"临时跑一个命令就跑完"的场景。smolvm 冷启动 <200ms,用完即焚,体验像运行本地命令行一样自然。

跨平台便携难

你开发时在 macOS,CI 在 Linux,部署在 Windows------每个平台的虚拟化方案都不一样。smolvm 统一抽象为 smolvm machine run,而且可以把一台完整 VM 打包成 .smolmachine 在任意支持的平台上恢复。

四、与其他方案的对比

smolvm 的 README 自带了一张对比表,非常清晰

维度 smolvm Docker 容器 Colima QEMU Firecracker Kata
隔离性 每工作负载独立 VM namespace(共享内核) namespace(1 个 VM) 独立 VM 独立 VM 每容器 VM
冷启动 <200ms ~100ms ~秒级 ~15-30s <125ms ~500ms
架构 库(libkrun) 守护进程 守护进程(在 VM 中) 进程 进程 运行时栈
每工作负载 VM ✗(共享)
macOS native 需 Docker VM ✔(krunkit)
可嵌入 SDK
便携制品 .smolmachine 镜像(需守护进程)

核心差异:

  • Docker------启动最快,但隔离最弱(共享内核)

  • QEMU------功能最全,但启动最慢(15-30 秒)

  • Firecracker------启动最快(<125ms),但只支持 Linux,不适合 macOS 开发机

  • smolvm------在启动速度(200ms)和平台覆盖(三大桌面系统)之间取了最实用的平衡点

    smolvm/
    ├── src/ # 主 CLI 入口
    ├── crates/
    │ ├── smolvm-agent # VM 内部代理
    │ ├── smolvm-network # 网络层
    │ ├── smolvm-pack # 打包子系统
    │ ├── smolvm-protocol # 宿主机-客户机协议
    │ ├── smolvm-registry # OCI 镜像注册表交互
    │ └── smolvm-smolfile # Smolfile 解析器
    └── docs/

五、适用场景

场景 为什么用 smolvm
临时运行不可信代码 硬件隔离 + 默认无网络 + 细粒度出站控制
构建便携开发环境 .smolmachine 文件跨平台运行,无依赖
CI/CD 任务隔离 次秒启动,用完即焚,不污染 CI 宿主机
本地开发与 CI 保持环境一致 同一 Smolfile 声明即可复现
短时容器化工作负载 比 Docker 隔离更强,比 QEMU 轻,代价适中
无 root 权限的场景 OCI 镜像拉取 + libkrun VMM,无需 Docker 守护进程

参考资料

https://github.com/smol-machines/smolvm

Introducing Podman v6.0.0

smolvm:一次秒冷的微 VM 运行器,比容器更隔离、比 QEMU 更轻 --- 朱皮特的烂笔头

相关推荐
MonolithIoT15 分钟前
实战方案|设备备件无人值守仓库:连续化产线运维备件 7×24 小时数字化管控方案
运维·网络·数据库
gwf2162 小时前
磨损均衡算法(Wear Leveling)——SSD如何让每块闪存“公平退休“?
运维·数据库·人工智能·python·嵌入式硬件·算法·智能硬件
AAA@峥2 小时前
CentOS7 源码编译安装 MySQL5.7|SQL 基础操作 + 备份恢复完整实战
运维·数据库·sql·centos
码上上班2 小时前
docker课程
java·docker·容器
Ai_easygo3 小时前
自动化客服Agent实战:用LangGraph+RAG+MCP把80%工单交给AI(从设计到部署)
运维·人工智能·自动化
2601_963282774 小时前
极寒专网技术拆解:黑龙江零下 40℃场景数字对讲组网全方案|黑龙江移远科技寒地通信底层技术解析
运维·网络·人工智能·科技
LedgerNinja5 小时前
WEEX API 稳定性实战:限频、重试与风控的工程化清单
运维·区块链
ZJH__GO5 小时前
网络编程v2--多客户端互通
java·运维·服务器·开发语言·计算机网络
Meya11275 小时前
实时采集 + 全域可视化,打造跨站点机房一体化U位管理方案
大数据·运维·人工智能
Gofarlic_OMS5 小时前
NX浮动许可调度黑名单机制,对比两款谁更合理
java·大数据·运维·开源·制造