Docker Sandboxes で OpenCodeを使ってみた
普段OpenCode使ってるけど、DockerからサンドボックスでOpenCodeを実行できるアプリが出てると聞いてやってみた。
Docker Sandboxes
これは、非常に小さな仮想環境を立ち上げてその中でOpenCodeやCodexなどを実行するもの。
ファイルシステムは自分の環境とは別の独立したファイルシステムだし、通信先もデフォルトはすべて拒否で、許可する通信先だけ明示的に許可設定する。
Dockerが出してるからコンテナかと思いきや違うらしい。あくまで仮想環境なのでカーネルも別で安心安心。
私の環境はWindows上のWSL(Ubuntu)。
Windows側にインストールしないといけないのかなーと思ったけど、wslに入れて普通に動いた。
インストール
WSLへのインストールはLinux向けインストール方法でいける
curl -fsSL https://get.docker.com | sudo REPO_ONLY=1 sh
sudo apt-get install docker-sbx
公式からコピーすると REPO_ONLY= 1 になってて、= と 1 の間のスペースでエラーになる。
修正して実行すればインストール終わります。
準備
そのまま実行してもダメだった。
まずは自分を kvm グループに入れる必要あり。
sudo usermod -aG kvm [自分のユーザー名]
ここで一旦 WSL を再起動
WSLをログアウトして
$ exit
PowerShell上でWSL停止
wsl --shutdown
再度WSLにログイン
$ wsl
WSL上で id コマンドで一応、自分が kvm グループに属していることを確認。
$ id
groups=...,1001(docker),XXX(kvm)
通信許可
Docker Sandboxes では通信先を明示的に許可しないといけない。
今回はOpenCodeを使うので、OpenCodeのAPIとの通信を許可。
$ sbx policy allow network opencode.ai:443
自分の場合は OpenCode から GPT-5.6 も使うから、これも許可する。
$ sbx policy allow network api.openai.com:443
デフォルトでGitHubは許可されてるっぽいけど、一応APIとか含めてやっておく
$ sbx policy allow network "github.com:22"
$ sbx policy allow network github.com:443
$ sbx policy allow network api.github.com:443
$ sbx policy allow network "*.githubusercontent.com:443"
$ sbx policy allow network raw.githubusercontent.com:443
$ sbx policy allow network objects.githubusercontent.com:443
$ sbx policy allow network "models.opencode.ai:443"
GPT-5.6使うために
OpenAIの認証も済ませておく。
$ sbx secret set openai --oauth
あらかじめOpenAIにログインして、表示されたURLを開けばOK。
起動
起動コマンドは以下
なお、CPUコア数や割り当てメモリ量は後から変えられないから、ここで指定しておくことを推奨。
(デフォルトは、CPUは全コア、メモリは半分を割り当て)
$ sbx run --cpus 10 -m 20g opencode
codex や ClaudeCode で使いたい場合は上記コマンドの opencode のところを置き換える。
設定
自分は OpenCode Go で使ってるのでAPIキーを設定。
これはサンドボックス環境では改めて設定する必要あり。
/connect
自分は DeepSeekV4 Flash を使ってるけど、自分の好きなモデルにチェンジ( /models )して、テストしてみましょう。
おまけ:デバッグ方法
うまく動かない場合は以下を実行して結果を確認
$ sbx diagnose
結果は以下のように表示される。
sbx diagnose
─────────────────────────────────────────
Installation
✓ CLI binary — found
/usr/bin/sbx
✓ Binary version — v0.39.0
✓ Daemon — healthy
version v0.39.0
✓ Daemon diagnostics — collected (78761 bytes)
Platform
✓ Virtualization — supported
/dev/kvm is accessible
Storage
✓ Storage directories — all 1 paths present
✓ Directory permissions — all writable
✓ Disk space — 865.4GiB free
865.4GiB free of 1007GiB on the state directory's volume
Connection
✓ Version match — v0.39.0
✓ Socket — responsive
✓ SSH client config — not configured
✓ Authentication — authenticated
─────────────────────────────────────────
12 passed
ここでFailedになってるところがあったら、それが原因なのでChatGPTとかに聞きながら解決したら動いた。
更新とか
WSL含むUbuntu環境なら普通に
sudo apt update
sudo apt install --only-upgrade docker-sbx
既に特定のプロジェクトで起動してるならテンプレートの削除と構築
以下コマンドでサンドボックス一覧を見て
$ sbx ls
更新したいやつを削除してインストール
$ sbx rm [サンドボックス名]
$ sbx run opencode
グローバル network policy は sandbox を削除・再作成しても残るので、通常は設定し直さなくて大丈夫。
サンドボックスのシェルに入っていろいろしたい
$ sbx exec -it [サンドボックス名] bash
サンドボックス名は sbx ls で確認。
GitHub用にSSH鍵作りたい場合は、上記で入って普通に鍵作ってGitHubに登録する。
セッション指定して起動した
$ sbx run opencode -- -s ses_xxxxxxxxxxxxxxxxxxxxxxxxxx
コメント
まだコメントはありません。