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を参照していただきたい。