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
© 2025 Hiroe Tech Notes. All rights reserved.

コメント

まだコメントはありません。