微虚拟机 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 更轻 --- 朱皮特的烂笔头

相关推荐
jerryinwuhan4 小时前
《系统部署与运维》开篇 课程介绍
运维
张忠琳5 小时前
【k3s】AutoK3s v0.9.3 Part 1 入口与 CLI 命令模块 — 超深度逐行分析之三
云原生·容器·kubernetes·k3s·autok3s
我是谁??6 小时前
Ubuntu22.04更换清华源
linux·运维·服务器
Shell运维手记7 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
朴马丁7 小时前
国际与国产PLM在精细化工赛道的布局:2026年主要厂商技术特色
大数据·运维·人工智能·流程行业plm·化工新材料
Elastic 中国社区官方博客8 小时前
Elasticsearch:使用 AI Agent 来创建 workflow
大数据·运维·人工智能·elasticsearch·搜索引擎·自动化·全文检索
测试运维日常笔记9 小时前
Linux系统安装配置TigerVNC服务器完整指南
linux·运维·服务器
喜欢的名字被抢了9 小时前
程序出问题怎么查,以及如何让它不掉线
java·运维·数据库
雾时之林9 小时前
Linux----cron定时服务
linux·运维·服务器
壹玖玖肆10 小时前
医院后勤智能运维系统实用性评测
运维