Docker 設定ガイド

OpenCode Docker 設定:コンテナ実行と安全な検証ガイド

結論:管理された隔離 workspace には Docker Sandbox、ローカルの OpenAI 互換モデル endpoint には Docker Model Runner、固定 package や network 規則が必要な場合だけ独自 image を使います。鍵は image の外に置き、編集対象だけを mount し、model を確認してから読み取り task を行います。

OpenCode Docker は再現可能な実行環境、file 境界、local model の経路が必要な場合に役立ちます。container だから安全なのではなく、image、mount、credential、network、権限、書き込み前の証拠を確認して安全性を作ります。

OpenCode と Docker Sandbox、Docker Model Runner、管理されたプロジェクト container の技術図
Docker は実行境界を作りますが、project mount、endpoint、権限は別に確認します。

最初の結論:目的に合う Docker 経路を選ぶ

Docker Sandbox は管理された隔離 workspace に向いています。どの file を mount するか、どの provider に code が送られるか、どの権限があるかを確認します。

Docker Model Runner は model service を提供し、OpenCode は coding interface のままです。service が動いても project mount や権限は設定されません。

独自 image は Node や package を固定できますが、Dockerfile、user、更新、secret の管理が必要です。

Docker の構成経路と違い

`opencode docker image`、`opencode docker compose`、`docker opencode` は同じ設定意図の変形です。別ページにはせず表で比較します。

単一 repository なら CLI が動き provider に接続できる最小 image から始めます。追加 service や home の mount は後にします。

model の privacy が目的なら inference service と coding agent を分けて記録します。endpoint は mount と権限確認の代わりになりません。

経路用途確認する境界
Docker Sandbox隔離 workspace の検証認証、mount、sandbox 権限
Docker Model Runnerlocal/private modelmodel、endpoint、port、context
独自 Docker image固定 tool と team 再現Dockerfile、user、更新、secret
Docker Compose複数 serviceservice、network、volume、cleanup

container で OpenCode を動かす前に

source code を mount する前に image の出所を確認します。公式資料または Dockerfile、base、更新履歴を確認できるものを選びます。

対象 project だけを mount し、home、SSH key、cloud credential、host の Docker socket は避けます。

credential は実行時に渡し、Dockerfile、layer、Git の Compose、shell history には書きません。`.dockerignore` も確認します。

小さな repository で読み取り、文書や fixture の小変更、Git diff、production に触れない test を行います。

安定した OpenCode Docker 構成の 7 チェック

チェックを順番に行うと起動結果が証拠になります。model が無ければ endpoint、file が違えば mount、write が広ければ権限を調べます。

Laptop と CI で同じ順番を使い、image、provider、path、command を記録します。

応答できても安全とは限りません。mutable image、広い volume、host access が残ることがあります。

  1. image を確認 名前、tag/digest、base、更新元、container user を記録します。
  2. workspace を狭くする project だけを mount し、別 branch または worktree を使います。
  3. provider を接続 endpoint を検証し、鍵は image と repository の外に置きます。
  4. model を確認 container 内で応答、ID、context、port を確認します。
  5. 読み取り task 変更前に file の要約を依頼します。
  6. 小さな diff 文書や fixture だけを変更し、無関係な file を拒否します。
  7. cleanup を記録 container を停止し、一時 volume を削除して修正を残します。
OpenCode Docker の検証手順:image、secret、mount、model、読み取り、Git diff
image、secret、mount、model endpoint、読み取り、小さな diff の順に確認します。

Docker Model Runner と OpenAI 互換 endpoint

Docker Model Runner は local または private inference に使えます。coding model を用意し、同じ network から応答を確認して URL と ID を使います。

endpoint test と OpenCode test を分け、context、権限、session を確認します。

interface と port を限定し、host gateway、Compose service 名、remote server のどれかを記録します。

# Illustrative shape only; confirm current image, endpoint, and model fields in official docs
docker run --rm -it --mount type=bind,src="$PWD",dst=/workspace --workdir /workspace -e OPENAI_API_KEY -e OPENAI_BASE_URL opencode-image:reviewed opencode

権限、secret、port、Git の安全

container の境界は権限モデルの一部です。OpenCode、Docker、Linux user、provider、Git の条件をそろえます。

最小 command、cleanup、volume、private port、image の再現方法を共有します。

最初の write は README の一行や fixture など小さくし、project 外の file が出たら止めます。

確認安全寄りの初期値危険信号
secretruntime 注入と rotationDockerfile、layer、Compose に鍵
file一つの project、non-root、worktreehome、SSH、Docker socket
network必要な endpoint と port のみ全 port 公開または public endpoint
Gitwrite 後に status と diffworktree 外への write
image確認済み digest/tagowner のない `latest`

トラブルシュート:失敗した層を分ける

`opencode` が無ければ provider を変える前に image、PATH、entrypoint、user を確認します。

model が空なら container 内から endpoint を試し、URL、DNS、port、credential、ID を確認します。`localhost` は container 自身かもしれません。

編集が違う場合は mount と task を小さくし、権限を確認して読み取りからやり直します。digest、model、diff を残します。

症状疑う層最初の確認
command が無いimage または PATH同じ image と workdir で version
provider に model が無いendpoint または IDcontainer 内で test し ID を比較
file が無いmount または workdirworkdir と project を表示
timeoutnetwork、port、quota、model短い request
予期しない filemount、権限、task停止し Git を確認、mount を縮小

OpenCode Docker よくある質問

OpenCode は Docker コンテナ で動きますか?

動きます。ただし image、project mount、credential、network、command 権限を確認してください。

Docker Sandbox と独自 image は?

管理された隔離は Sandbox、固定依存を保守できる場合は独自 image です。

Docker Model Runner に接続するには?

service を確認し、公式の OpenAI 互換 base URL と model ID を同じ network から使います。

何を mount しますか?

対象 project または worktree だけにし、home、SSH key、credential、Docker socket は避けます。

Compose は必須ですか?

必須ではありません。複数 service を private network で再現する場合に使います。

model が見えない理由は?

base URL、container 内 localhost、ID、port、key、service 名を確認します。

確認する公式資料

統合仕様は変わります。敏感な repository で command を使う前に、公式資料で image、認証、endpoint、権限を確認してください。