はじめに
AIコーディングエージェントや自動化ツールの開発・検証を行う際、外部環境への影響を最小限に抑え、安全に実行できるサンドボックス環境が必要となる。
Docker社が提供する「Docker Sandbox」は、クラウド上で即座に利用可能な分離型の開発環境であり、特にAIエージェントや自動化スクリプトのテスト用途に適している。
本記事では、Docker Sandboxの概要と、AIコーディングエージェントの実験環境として実際に利用した手順とか感想をまとめる。
環境
WSL2 Ubuntu 24.04
Docker Desktop Version 4.62.0 (219486)使い方
1. Docker Sandboxとは?
AIエージェントやLLMが安全にコードを実行できる隔離環境(sandbox)をDockerで提供する仕組みとなっている。
試すには、Docker Desktop 4.58 もしくは それ以降のバージョン が必要である。
より詳細な使い方やAPI連携、制限事項などは公式ドキュメントを参照。
2. サンドボックスの作成手順
以下では、ワークスペースからサンドボックスを作成してエージェントを起動するまでの最小手順を示す。
公式の「How to use sandboxes」に準拠した流れである。
- ワークスペースのディレクトリに移動する。
cd ~/my-project- 好きなエージェント名を指定してサンドボックスを起動する。例では
claudeを用いる。
docker sandbox run claudeログ
Creating new sandbox 'claude-kbushi'...
claude-code: Pulling from docker/sandbox-templates
16c195d4c5e9: Pull complete
dc2c11f2c0a1: Pull complete
1a31a70c4b82: Pull complete
904260fe07c4: Pull complete
89dd8b3c56dc: Pull complete
b637236b63f7: Pull complete
7cac1b311f5c: Pull complete
fb1a1c031f54: Pull complete
bf85e16c52e9: Pull complete
4db8210ddb5e: Pull complete
5b8ce9a5ef14: Pull complete
9ee4f5a9c156: Pull complete
Digest: sha256:2b02ab018f642fbfda48a14ba53bd3c07f123e917128ed15b343540fa00d2501
Status: Downloaded newer image for docker/sandbox-templates:claude-code
To connect to this sandbox, run:
docker sandbox run claude-kbushi
Starting claude agent in sandbox 'claude-kbushi'...
Workspace: \\wsl.localhost\Ubuntu-24.04\home\kbushi
docker sandbox lsWelcome to Claude Code v2.1.58
…………………………………………………………………………………………………………………………………………………………
* █████▓▓░
* ███▓░ ░░
░░░░░░ ███▓░
░░░ ░░░░░░░░░░ ███▓░
░░░░░░░░░░░░░░░░░░░ * ██▓░░ ▓
░▓▓███▓▓░
* ░░░░
░░░░░░░░
░░░░░░░░░░░░░░░░
█████████ *
██▄█████▄██ *
█████████ *
…………………█ █ █ █………………………………………………………………………………………………………………
Let's get started.
Choose the text style that looks best with your terminal
To change this later, run /theme
❯ 1. Dark mode ✔
2. Light mode
3. Dark mode (colorblind-friendly)
4. Light mode (colorblind-friendly)
5. Dark mode (ANSI colors only)
6. Light mode (ANSI colors only)
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
1 function greet() {
2 - console.log("Hello, World!");
2 + console.log("Hello, Claude!");
3 }
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
Syntax theme: Monokai Extended (ctrl+t to disable)このコマンドはカレントディレクトリ(~/my-project)をワークスペースとして用い、分離されたサンドボックスを作成してエージェントを起動する。エージェントはワークスペース内のファイルにアクセスし、コマンド実行やコンテナ起動が可能である。
- 別のパスを指定して複数のサンドボックスを作ることもできる。
docker sandbox run claude ~/project-a
docker sandbox run claude ~/project-b各サンドボックスは完全に分離され、互いの環境に影響を与えない。
- 起動中のサンドボックスを確認する。
docker sandbox lsサンドボックスはマイクロVM上で動作するため、ホストの通常のdocker psには表示されない点に注意する。
- サンドボックス内での作業
起動後はブラウザ上のターミナル(またはサンドボックス内の端末)から通常の操作を行う。たとえば、リポジトリをクローンして依存をインストールし、エージェントを実行する流れは次の通りである。
git clone <your-repo>
cd <your-repo>
pip install -r requirements.txt
python agent.py- 停止・削除
作業が終わったらサンドボックスを停止・削除する。コマンドは環境やバージョンにより異なる場合があるため、詳細はドキュメントを参照してほしい。
基本的な操作例は以下の通りである。
docker sandbox stop <sandbox-id-or-name>
docker sandbox rm <sandbox-id-or-name>- 注意点
- サンドボックスは基本的にエフェメラルな実行を想定しており、一定時間で停止・削除されることがある。永続化が必要な成果物はGitや外部ストレージへ保存する必要がある。
- 利用するエージェントやテンプレート、プランにより利用可能なリソース(CPU/GPU/メモリ)や同時実行数が変わるため、事前に仕様を確認すること。
上記により、ワークスペースから安全にエージェントを起動し、実験・検証を行える。
対応しているコーディングエージェント
以下は公式ドキュメントで挙げられている、Docker Sandboxで利用できる主なコーディングエージェントである。
状態は公式記載に基づく。
| エージェント | 説明 | 状態 |
|---|---|---|
| Claude Code | Anthropicのコーディング向けエージェント | production-ready |
| Codex | OpenAIのCodexエージェント | in development |
| Copilot | GitHub Copilotエージェント | in development |
| Gemini | GoogleのGeminiエージェント | in development |
| OpenCode | マルチプロバイダ対応のTUIインターフェースを持つエージェント | in development |
| cagent | Docker製のマルチプロバイダコーディングエージェント | in development |
| Kiro | デバイスフロー認証を伴うインタラクティブエージェント | in development |
| Shell | 手動でエージェントを導入するための最小限の環境 | minimal |
詳細な設定方法や各エージェント固有の認証手順については、公式ドキュメントのAgentsページを参照されたい。
参考
Docker Sandbox
https://www.docker.com/ja-jp/products/docker-sandboxes/Docker Sandbox公式ドキュメント
https://docs.docker.com/ai/sandboxes/
おわりに
最近だとコーディングエージェントを使ってプログラムを書くことが多くなった。
書いていくうえで、権限をポチポチ与えていきながらやっていくことがまああるのだがそれすらも面倒になってくる。
ただ、YOLOモードを使うにしても、ローカル環境破壊される可能性もあるのでどうしたものかとおもっていた。
そういう意味ではDocker sandboxは分離環境を作ってくれるので非常に良いなと思った。