powered by TechFeed
表示モード
Deep Dive

AIエージェントのサンドボックスにDockerは遅すぎる — 50ms以下で起動するbwrapなど3つの代替ツールの使い分け

7月28日、grigio.orgが「Docker alternatives for AI agents: Podman, bwrap and Firejail」と題した記事を公開した。AIコーディングエージェントのサンドボックス化においてDockerより適した3つの代替ツール(Podman・bwrap・Firejail)の特性と使い分けについて詳しく紹介されている。

7月28日、grigio.orgが「Docker alternatives for AI agents: Podman, bwrap and Firejail」と題した記事を公開した。AIコーディングエージェントのサンドボックス化においてDockerより適した3つの代替ツール(Podman・bwrap・Firejail)の特性と使い分けについて詳しく紹介されている。


AIコーディングエージェントは「マイクロサービスではない」という前提から、この記事は出発する。エージェントが実行するのは長期稼働のサーバーではなく、短命なコマンドの連続だ。必要なのはポートマッピングではなくSSH鍵からの隔離であり、1タスクで20個のサンドボックスを起動するような場面では、Dockerの3秒起動は致命的に遅い

そしてもう一つの問題がある。エージェントは任意のコードを機械的な速度で実行する。バグ、悪意のあるコード、プロンプトインジェクション——そのリスクは現実だ。

「エージェントが rm -rf / を実行した——サンドボックスのブロックが本当に機能するか確かめるために」— Reddit r/LocalLLaMA(355 upvotes)

投稿者はbubblewrapサンドボックスを実装しており、それが実際に機能したという。


本命は bwrap:50ms以下で起動するサンドボックス

3つの中で最も注目すべきのがBubblewrap(bwrap)だ。コード量はわずか約8,000行のC。FlatpakやOpenAIのCodex CLIが採用しており、起動は50ms未満

bwrapの強みは徹底したミニマリズムにある:

  • デーモン不要、root不要。純粋なユーザー名前空間だけで動作
  • Linuxケイパビリティをすべて削除(ゼロ)
  • ファイルシステムへのアクセスパスを明示的に制御
  • TOCTTOU攻撃への対策を講じている

「bwrapははるかに誠実だ。単なるsyscallラッパーで、root権限は一切不要」— Hacker Newsユーザー

実際にbwrapをAIエージェントに使用しているプロジェクト:

  • bubblewrap-ai — Claude、Gemini、GooseをbwrapサンドボックスでGPU実行
  • sandbox-bwrap-nix — Opencode等のAIツールをNixと組み合わせ、ホストを汚染せずソフトウェアをインストール可能にする
  • Codex CLI — OpenAIがコード実行隔離にbwrapを採用
  • Claude Code — 元記事によれば、Anthropicはbwrapサンドボックスの採用によりパーミッションプロンプトを84%削減したと報告している

欠点はLinux専用であること、イメージ管理機能なし、リソース制限の仕組みがないこと。macOSやWindowsでは使えない。

ベストユースケース: コマンド単位のエージェントサンドボックス、ローカル開発、CIパイプライン


Podman:本番環境向けのDockerレス選択肢

PodmanはOCI標準互換・Docker CLI互換でありながら、デーモンレス・rootlessがデフォルトという設計が特徴だ。podman play kube でKubernetes YAMLをローカルテストでき、Quadletsを使ったsystemdユーザーサービスとしてエージェントを管理できる。

起動時間は100〜500msと bwrap より遅く、短命なサンドボックスの連続起動には向かない。GPUパススルーにはCDIとSELinuxの回避策が必要で、macOS/WindowsではPodman Machine(Linux VM)が必要になる。

ベストユースケース: 本番エージェントサービス、マルチテナントCI、Kubernetes互換の隔離環境


Firejail:設定不要の手軽な選択肢

FirejailはFirefox、Chrome、Telegram、GIMPなど約1,000のプロファイルを内蔵するSUIDプログラムだ。firejail agent.sh と打つだけで動く手軽さが最大の売りで、X11/Wayland分離やSeccompログも備える。

ただし、SUIDバイナリであるためbwrapよりも攻撃面が大きい。プロファイルはブラックリストベースが主体で、ホワイトリスト化は進行中。コマンド単位のエージェントパターンよりもデスクトップアプリ向けの設計だ。

ベストユースケース: ブラウザ自動化エージェント、デスクトップAIツール、ドキュメントを読まずに「とにかく安全にしたい」場面


判断基準まとめ

基準 Podman bwrap Firejail
起動時間 100〜500ms <50ms <50ms
隔離強度 高(名前空間+cgroups) 中(名前空間) 中〜高(名前空間+seccomp+Landlock)
rootless デフォルト Yes Yes(ユーザー名前空間)
攻撃面 大(15万行超 Go) 最小(8千行 C) 中(5万行超 C、SUID)
プリセットプロファイル なし なし 約1,000
イメージ管理 あり(OCI) なし なし
GPU対応 Yes(CDI) 手動(/dev/dri) 手動

結論

  • 本番エージェントインフラ(マルチテナント、GPU、CI統合)→ Podman
  • ローカルエージェント開発(Claude Code、Codex CLI、カスタムスクリプト)→ bwrap
  • デスクトップエージェント(ブラウザ自動化、GUIツール)→ Firejail

これらより強い隔離が必要な場合はMicroVM(Firecracker、gVisor、Kata)という選択肢もあるが、それは別の話とされている。

詳細はDocker alternatives for AI agents: Podman, bwrap and Firejailを参照していただきたい。