0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

起動200msのマイクロVM「smolvm」入門 — コンテナの手軽さでハードウェア分離を手に入れる

0
Posted at

起動200msのマイクロVM「smolvm」入門

Show HNで話題になったOSS「smolvm」(smol-machines/smolvm、Apache 2.0、Rust製)を触ってみたので、要点をまとめます。あわせて日本語解説サイトも公開しました。

解説サイト: https://smolvm.businesshub.trueone.co.jp/

smolvmとは

「コンテナのエルゴノミクスで本物のVMを扱う」CLIツールです。

  • 起動 <200ms のマイクロVM(QEMUの15〜30秒、Kataの〜500msと比較して高速)
  • ワークロードごとに専用カーネルが立つ真のハードウェア分離(コンテナのnamespace分離とは別物)
  • macOS(Hypervisor.framework)/ Linux(KVM)/ Windows(WHP)対応
  • OCIコンテナイメージをそのままrootfsとして利用(Dockerデーモン不要)
  • VMの状態を単一ファイル .smolmachine にパックして配布可能

インストール

curl -sSL https://smolmachines.com/install.sh | bash

基本操作

一時VMでコマンド実行(終了後に自動破棄)

smolvm machine run --net --image alpine -- sh -c "echo 'Hello from VM'"
smolvm machine run --net -it --image alpine -- /bin/sh   # 対話シェル

永続マシン

smolvm machine create --net --name devbox
smolvm machine exec --name devbox -it -- /bin/sh
smolvm machine stop --name devbox    # インストール済みパッケージは維持される

ポータブル実行ファイル化

smolvm pack create --image python:3.12-alpine -o ./python312
./python312 run -- python3 --version

依存がすべて焼き込まれた単一バイナリになるので、「インストール手順書」を配る代わりに実行ファイルを1個渡せば済みます。

Smolfile(TOML)で環境を宣言

image = "python:3.12-alpine"
net = true

[network]
allow_hosts = ["api.stripe.com"]

[dev]
init = ["pip install -r requirements.txt"]
volumes = ["./src:/app"]

セキュリティ面が本命

個人的に一番の推しポイントです。

  1. ネットワークはデフォルト遮断--net で有効化しても --allow-host でegress許可リストを強制できる
  2. SSH鍵がゲストに入らない--ssh-agent でエージェント転送だけを許可し、秘密鍵の分離をハイパーバイザ境界で保証
  3. AI生成コードの実行サンドボックスとして、ホストのファイル・認証情報・ネットワークをハードウェア境界で守れる

LLMエージェントに rm -rf されても泣かないための現実解と言えます。

類似技術との位置づけ

分離単位 起動 macOSネイティブ 可搬成果物
smolvm ワークロード毎にVM <200ms .smolmachine
コンテナ namespace(カーネル共有) ~100ms ❌(Docker VM経由) イメージ(要デーモン)
Firecracker VM <125ms
Kata Containers コンテナ毎にVM ~500ms
QEMU VM 15〜30s

Firecrackerと同じマイクロVM系ですが、macOS対応と単一ファイル配布が差別化点です。ローカル開発〜CI〜本番サンドボックスを同じツールで通せます。

注意点

  • ネットワークはTCP/UDPのみ(ICMP不可、pingは通らない)
  • ボリュームマウントはディレクトリ単位のみ
  • WindowsはGPU・fork・スナップショット未対応

まとめ

「コンテナでは分離が不安、VMでは重い」の間を正確に埋めるツールです。特にAIエージェント基盤やCI、エアギャップ環境で刺さると思います。

アーキテクチャの内部(libkrun、virtio balloon、Venus GPU等)はZennの記事と解説サイトに書きました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?