Claude Code で container-use を使ってみる
最近 Pro プランでも Claude Code が使えるようになったのでプライベートで使って遊んでみている。
プライベートではそんなに大量にコードを書くこともないので Pro プランの制限の中でも割と遊べている。
そんな中、すべてのコーディングエージェントに独立した開発用コンテナ環境を与えられる「Container Use」、Docker創業者がオープンソースで公開 で dagger/container-use の存在を知った。
これまででいうと、公式には Run parallel Claude Code sessions with Git worktrees の中でも git worktree
で作業を並行化することを推奨していたが個人的には設定が面倒で重い腰を上げれずにいた。
dagger/container-use は、作業ごとに独立した環境を提供してくれるので、これまでの git worktree
のような使い方よりも簡単に使えそうで、これはと思って試してみた。
実際めちゃくちゃ簡単に使うことができたのでしばらく使ってみようと思う。
container-use とは
冒頭でも触れた通り、dagger/container-use は、docker を使って独立した開発用コンテナ環境を提供するもの。
MCPサーバーとして起動して、 Claude Code などから利用することができる。
詳細な仕組みは /environment/README.md にも書いてあるがまだ深くは読み込めていない。
要するに branch ごとに独立した環境で作業をすることができるということかと理解している。
使ってみる
インストール
基本は README.md に書いている通りに進めれば良い。
また記載の通り、 docker (MacOS の場合には基本は Docker Desktop) と git が必要になる。
1点だけ注意が必要で container-use
はバイナリの名前が cu
でこれは MacOS の場合は通常 cu コマンドと被ってしまう。
(名前についての議論は dagger/container-use/issues/18 でもされてたようだけれど、 cu
のままとすることに決まった模様)
cu コマンドと被ってしまっている場合には、インストールした際に以下のようなメッセージが出てくる。
書いてある通り、PATH の優先度を変えても良いが、 MCP として設定する時にフルパス ( /Users/xxx/.local/bin/cu
) を指定すればいいだけではある。
$ curl -fsSL https://raw.githubusercontent.com/dagger/container-use/main/install.sh | bash
...
✅ Installation complete!
❌ Detected Taylor UUCP 'cu' command instead of container-use
ℹ️ The system 'cu' command at /usr/bin/cu is taking precedence
ℹ️ Try running: /Users/xxx/.local/bin/cu --help
ℹ️ Or run 'hash -r' and try again
ℹ️ Or add /Users/xxx/.local/bin to the beginning of your PATH
...
MCP の設定 (Claude Code の場合)
README.md には以下のように書いてある
cd /path/to/repository
npx @anthropic-ai/claude-code mcp add container-use -- <full path to cu command> stdio
が project scope として追加したいとかもあり、また claude mcp add
で追加する方が自然なので以下で実行した
claude mcp add container-use -s project /Users/xxx/.local/bin/cu stdio
すると以下のような .mcp.json
が作成される
{
"mcpServers": {
"container-use": {
"type": "stdio",
"command": "/Users/xxx/.local/bin/cu",
"args": [
"stdio"
],
"env": {}
}
}
}
また、ここ にある指示を CLAUDE.md
に追記しておく必要がある。
設定が正常にできているならば Claude Code を起動して /mcp
を実行すると以下のように container-use
が接続されていることを確認できる
Manage MCP Servers
1 server found
❯ 1. container-use connected
実行してみる
例えば以下のようなプロンプトを実行すると、3環境起動していることが確認できる
> 以下3つのタスクを並行して container-use を利用して独立した環境で実施してください
* タスク A
* タスク B
* タスク C
するとすぐに以下のようなログが流れて3つの環境を起動しようとしていることがわかる
⏺ container-use:environment_open (MCP)(source: "/path/to/repo", name: "task-A", explanation: "タスク A")
⏺ container-use:environment_open (MCP)(source: "/path/to/repo", name: "task-B", explanation: "タスク B")
⏺ container-use:environment_open (MCP)(source: "/path/to/repo", name: "task-C", explanation: "タスク C")
実際以下のように branch が作られていることがわかる
$ git branch
* main
repo-task-a/prime-hound
repo-task-b/central-grubworm
repo-task-c/accurate-chow
今回はやっていないが、 GitHub MCP などを使って Pull Request を作ってもらうことも可能なので実質ローカルで Claude Code Actions みたいなことができる。
多少、各環境で環境設定からになったりすることもあり、時間やトークンを消費しているような気もするが今回はそこまで気にならない程度の差だった
まとめ
- dagger/container-use を使うことで、独立した環境で並行して作業を進めることができるので、これまでの
git worktree
のような使い方よりも簡単に使える - インストールの時には osx の
cu
コマンドと被るので注意が必要 - 作業は別の branch を切って実行される