Docker(オプション)
Docker は 任意 です。 Docker は オプション です。コンテナ化された ゲートウェイ を使いたい場合、または Docker フローを検証したい場合にのみ使用してください。 Docker は オプション です。コンテナ化された ゲートウェイ を使いたい場合、または Docker フローを検証したい場合にのみ使用してください。Docker は自分に向いていますか?
- はい:分離された使い捨ての ゲートウェイ 環境が必要、またはローカルインストールなしで OpenClaw をホスト上で実行したい場合。
- いいえ:自分のマシンで実行し、最速の開発ループが欲しいだけの場合。通常のインストール フローを使用してください。 代わりに通常のインストール フローを使用します。 代わりに通常のインストール フローを使用します。
- サンドボックス化に関する注記:エージェントのサンドボックス化でも Docker を使用しますが、完全な ゲートウェイ を Docker で実行する必要は ありません。Sandboxing を参照してください。 Sandboxing を参照してください。 Sandboxing を参照してください。
- コンテナ化された Gateway(Docker 内での完全な OpenClaw)
- セッションごとの エージェント サンドボックス(ホスト上の ゲートウェイ + Docker で分離されたエージェント ツール)
要件
- Docker Desktop(または Docker Engine)+ Docker Compose v2
- イメージおよびログ用の十分なディスク容量
コンテナ化された Gateway(Docker Compose)
クイックスタート(推奨)
リポジトリのルートから:- ゲートウェイ イメージをビルド
- オンボーディング ウィザードを実行
- オプションのプロバイダ設定ヒントを印刷
- Docker Compose 経由で ゲートウェイ を起動
- ゲートウェイ トークンを生成し、
.envに書き込み
OPENCLAW_DOCKER_APT_PACKAGES— ビルド中に追加の apt パッケージをインストールOPENCLAW_EXTRA_MOUNTS— 追加のホスト バインド マウントを追加OPENCLAW_HOME_VOLUME— 名前付きボリュームに/home/nodeを永続化
- ブラウザーで
http://127.0.0.1:18789/を開きます。 - Control UI(Settings → token)にトークンを貼り付けます。
- もう一度URLを入力しますか? もう一度URLを入力しますか? URL が再度必要ですか?
docker compose run --rm openclaw-cli dashboard --no-openを実行してください。
~/.openclaw/~/.openclaw/workspace
シェルヘルパー(任意)
日常的なDocker管理を簡単にするために、ClawDock をインストールしてください:
clawdock-start、clawdock-stop、clawdock-dashboard などを使用できます。 すべてのコマンドを表示するには clawdock-help を実行してください。
詳細は ClawDock Helper README を参照してください。
手動フロー(compose)
docker compose ...を実行します。 Note: repoルートからdocker compose ...を実行します。 注記:リポジトリ ルートから docker compose ... を実行してください。OPENCLAW_EXTRA_MOUNTS または OPENCLAW_HOME_VOLUME を有効にした場合、セットアップ スクリプトは
docker-compose.extra.yml を書き込みます。別の場所で Compose を実行する際は、これを含めてください:
Control UI トークン + ペアリング(Docker)
「unauthorized」または「disconnected(1008):pairing required」と表示される場合は、 新しいダッシュボード リンクを取得し、ブラウザー デバイスを承認してください:追加マウント(オプション)
追加のホスト ディレクトリをコンテナにマウントしたい場合は、docker-setup.sh を実行する前に OPENCLAW_EXTRA_MOUNTS を設定してください。これは
Docker のバインド マウントのカンマ区切りリストを受け取り、openclaw-gateway と
openclaw-cli の両方に適用するため、docker-compose.extra.yml を生成します。 これは
コンマで区切られた Docker バインドマウントのリストを受け取り、docker-compose.extra.yml を生成することで
openclaw-gateway と openclaw-cli の両方に適用されます。 これは
コンマで区切られた Docker バインドマウントのリストを受け取り、docker-compose.extra.yml を生成することで
openclaw-gateway と openclaw-cli の両方に適用されます。
例:
- macOS / Windows では、パスを Docker Desktop と共有する必要があります。
OPENCLAW_EXTRA_MOUNTSを編集した場合、docker-setup.shを再実行して 追加の compose ファイルを再生成してください。docker-compose.extra.ymlは生成物です。手動で編集しないでください。 手作業で編集しないでください。 手作業で編集しないでください。
コンテナの home 全体を永続化(オプション)
/home/node をコンテナ再作成後も永続化したい場合は、
OPENCLAW_HOME_VOLUME で名前付きボリュームを設定してください。これにより Docker ボリュームが作成され、
/home/node にマウントされます。標準の 設定 / ワークスペース のバインド マウントは維持されます。
ここでは名前付きボリュームを使用してください(バインド パスではありません)。
バインド マウントを使用する場合は、OPENCLAW_EXTRA_MOUNTS を使用してください。 /home/node をコンテナ再作成後も永続化したい場合は、
OPENCLAW_HOME_VOLUME で名前付きボリュームを設定してください。これにより Docker ボリュームが作成され、
/home/node にマウントされます。標準の 設定 / ワークスペース のバインド マウントは維持されます。
ここでは名前付きボリュームを使用してください(バインド パスではありません)。
バインド マウントを使用する場合は、OPENCLAW_EXTRA_MOUNTS を使用してください。 これにより、Docker ボリュームが作成され、
/home/node にマウントされ、標準の config/workspace バインドマウントが維持されます。 32. ここでは名前付きボリュームを使用してください(バインドパスではありません)。バインドマウントの場合は OPENCLAW_EXTRA_MOUNTS を使用します。
例:
OPENCLAW_HOME_VOLUMEを変更した場合、docker-setup.shを再実行して 追加の compose ファイルを再生成してください。- 名前付きボリュームは、
docker volume rm <name>で削除するまで保持されます。
追加の apt パッケージをインストール(オプション)
イメージ内にシステム パッケージ(例:ビルド ツールやメディア ライブラリ)が必要な場合は、docker-setup.sh を実行する前に OPENCLAW_DOCKER_APT_PACKAGES を設定してください。
これはイメージ ビルド中にパッケージをインストールするため、コンテナを削除しても保持されます。
これにより、イメージビルド中にパッケージがインストールされるため、
コンテナが削除されても継続します。
これにより、イメージビルド中にパッケージがインストールされるため、
コンテナが削除されても継続します。
例:
- apt パッケージ名のスペース区切りリストを受け取ります。
OPENCLAW_DOCKER_APT_PACKAGESを変更した場合、docker-setup.shを再実行して イメージを再ビルドしてください。
パワーユーザー / フル機能コンテナ(オプトイン)
既定の Docker イメージは セキュリティ重視 で、非 root のnode
ユーザーとして実行されます。これにより攻撃面は小さくなりますが、次の制限があります: これにより、攻撃面が小さくなりますが、それは以下のことを意味します。 これにより、攻撃面が小さくなりますが、それは以下のことを意味します。
- 実行時のシステム パッケージ インストール不可
- 既定では Homebrew なし
- Chromium / Playwright ブラウザーは同梱されない
/home/nodeを永続化 して、ブラウザー ダウンロードやツール キャッシュを保持:
- システム依存関係をイメージに焼き込み(再現可能 + 永続):
npxを使わずに Playwright ブラウザーをインストール(npm の上書き競合を回避):
--with-deps を使用する代わりに、
OPENCLAW_DOCKER_APT_PACKAGES でイメージを再ビルドしてください。
- Playwright ブラウザーのダウンロードを永続化:
docker-compose.ymlでPLAYWRIGHT_BROWSERS_PATH=/home/node/.cache/ms-playwrightを設定。OPENCLAW_HOME_VOLUMEにより/home/nodeが永続化されることを確認するか、OPENCLAW_EXTRA_MOUNTSで/home/node/.cache/ms-playwrightをマウントしてください。
権限 + EACCES
イメージはnode (uid 1000) として実行されます。 イメージは node (uid 1000) として実行されます。 イメージは node(uid 1000)として実行されます。/home/node/.openclaw に対する
権限エラーが表示される場合は、ホストのバインド マウントが uid 1000 の所有になっていることを確認してください。
例(Linux ホスト):
高速な再ビルド(推奨)
再ビルドを高速化するには、Dockerfile 内で依存関係レイヤーがキャッシュされるように順序を調整してください。 これにより、ロックファイルが変更されない限りpnpm install の再実行を回避できます:
ロックファイルが変更されない限り、 pnpm install の再実行を回避します。
ロックファイルが変更されない限り、 pnpm install の再実行を回避します。
チャンネル セットアップ(オプション)
CLI コンテナを使用して チャンネル を設定し、必要に応じて ゲートウェイ を再起動してください。 WhatsApp(QR):OpenAI Codex OAuth(ヘッドレス Docker)
ウィザードで OpenAI Codex OAuth を選択すると、ブラウザー URL が開かれ、http://127.0.0.1:1455/auth/callback でのコールバック取得を試みます。Docker や
ヘッドレス環境では、このコールバックでブラウザー エラーが表示される場合があります。
最終的に到達した完全なリダイレクト URL をコピーし、ウィザードに貼り付けて認証を完了してください。 Docker または
では、コールバックにブラウザエラーが表示されるヘッドレス設定があります。 完全なリダイレクト
URLをコピーし、ウィザードに貼り付けて認証を完了します。 Docker または
では、コールバックにブラウザエラーが表示されるヘッドレス設定があります。 完全なリダイレクト
URLをコピーし、ウィザードに貼り付けて認証を完了します。
ヘルスチェック
E2E スモークテスト(Docker)
QR インポート スモークテスト(Docker)
注記
- Gateway のバインドは、コンテナ用途では既定で
lanです。 - Dockerfile の CMD は
--allow-unconfiguredを使用します。localではなくgateway.modeを用いてマウントされた設定でも起動します。ガードを強制するには CMD を上書きしてください。 ガードを強制するためにCMDを上書きします。 ガードを強制するためにCMDを上書きします。 - ゲートウェイ コンテナは、セッション(
~/.openclaw/agents/<agentId>/sessions/)の信頼できる情報源です。
エージェント サンドボックス(ホスト ゲートウェイ + Docker ツール)
詳細:Sandboxing何をするか
agents.defaults.sandbox を有効にすると、メイン以外のセッション は Docker
コンテナ内でツールを実行します。ゲートウェイ はホストに残り、ツール実行のみが分離されます: ゲートウェイはホスト上にとどまりますが、ツールの実行は分離されています: ゲートウェイはホスト上にとどまりますが、ツールの実行は分離されています:
- スコープ:既定で
"agent"(エージェントごとに 1 コンテナ + ワークスペース) - スコープ:セッションごとの分離には
"session" - スコープごとのワークスペース フォルダーが
/workspaceにマウント - オプションの エージェント ワークスペース アクセス(
agents.defaults.sandbox.workspaceAccess) - ツールの許可 / 拒否ポリシー(拒否が優先)
- 受信メディアはアクティブなサンドボックス ワークスペース(
media/inbound/*)にコピーされ、 ツールが読み取れるようになります(workspaceAccess: "rw"を使用すると、エージェント ワークスペースに配置されます)
scope: "shared" はセッション間の分離を無効化します。すべてのセッションが
1 つのコンテナと 1 つのワークスペースを共有します。 警告:scope: "shared" はセッション間の分離を無効化します。すべてのセッションが
1 つのコンテナと 1 つのワークスペースを共有します。 すべてのセッションは
コンテナ1つとワークスペース1つを共有します。
エージェントごとのサンドボックス プロファイル(マルチエージェント)
マルチエージェント ルーティングを使用する場合、各エージェントはagents.list[].sandbox および agents.list[].tools(および agents.list[].tools.sandbox.tools)を上書きできます。
これにより、1 つの ゲートウェイ で異なるアクセス レベルを混在させられます: これにより、1 つのゲートウェイで
混合アクセスレベルを実行できます。 これにより、1 つのゲートウェイで
混合アクセスレベルを実行できます。
- フル アクセス(個人用エージェント)
- 読み取り専用ツール + 読み取り専用ワークスペース(家族 / 業務用エージェント)
- ファイルシステム / シェル ツールなし(公開エージェント)
既定の挙動
- イメージ:
openclaw-sandbox:bookworm-slim - エージェントごとに 1 コンテナ
- エージェント ワークスペース アクセス:
workspaceAccess: "none"(既定)は~/.openclaw/sandboxesを使用"ro"はサンドボックス ワークスペースを/workspaceに保持し、 エージェント ワークスペースを/agentに読み取り専用でマウント (write/edit/apply_patchを無効化)"rw"はエージェント ワークスペースを/workspaceに読み書きでマウント
- 自動プルーン:アイドル > 24 時間 または 経過 > 7 日
- ネットワーク:既定で
none(外向き通信が必要な場合は明示的にオプトイン) - 既定で許可:
exec,process,read,write,edit,sessions_list,sessions_history,sessions_send,sessions_spawn,session_status - 既定で拒否:
browser,canvas,nodes,cron,discord,gateway
サンドボックス化を有効化
setupCommand にパッケージをインストールする予定がある場合、次に注意してください:
- 既定の
docker.networkは"none"(外向き通信なし)です。 readOnlyRoot: trueはパッケージ インストールをブロックします。apt-getの場合はuserをルートにする必要があります(userを省略するか、user: "0:0"を設定します)。setupCommand(またはdocker config) が に変更されたときに、コンテナが最近使用された (約 5 分以内) でない限り、OpenClaw はコンテナを自動的に再作成します。 ホットコンテナ はopenclawサンドボックスを再作成する...コマンドで警告をログに記録します。
agents.defaults.sandbox.docker 配下にあります:
network, user, pidsLimit, memory, memorySwap, cpus, ulimits,
seccompProfile, apparmorProfile, dns, extraHosts。
マルチエージェント:agents.list[].sandbox.{docker,browser,prune}.* を使用して、エージェントごとに agents.defaults.sandbox.{docker,browser,prune}.* を上書き
(agents.defaults.sandbox.scope / agents.list[].sandbox.scope が "shared" の場合は無視されます)。
既定のサンドボックス イメージをビルド
Dockerfile.sandbox を使用して openclaw-sandbox:bookworm-slim をビルドします。
サンドボックス 共通イメージ(オプション)
一般的なビルド ツール(Node、Go、Rust など)を含むサンドボックス イメージが必要な場合は、 共通イメージをビルドしてください:openclaw-sandbox-common:bookworm-slim をビルドします。使用するには: 使用するには: 使用するには:
サンドボックス ブラウザー イメージ
サンドボックス内でブラウザー ツールを実行するには、ブラウザー イメージをビルドします:Dockerfile.sandbox-browser を使用して openclaw-sandbox-browser:bookworm-slim をビルドします。 このコンテナは、CDPが有効な状態でChromiumを実行し、オプションのnoVNCオブザーバー(Xvfbを介してヘッドフル)を
します。
注記:
- ヘッドフル(Xvfb)は、ヘッドレスよりもボット ブロッキングを低減します。
agents.defaults.sandbox.browser.headless=trueを設定すれば、ヘッドレスも使用できます。- 完全なデスクトップ環境(GNOME)は不要で、Xvfb が表示を提供します。
- サンドボックス ブラウザー制御 URL(
browserツール用) - noVNC URL(有効化され、headless=false の場合)
browser を追加(そして
拒否から削除)するか、ツールがブロックされたままになります。
ツールに許可リストを使用している場合は、browser を追加(そして
拒否から削除)するか、ツールがブロックされたままになります。
prune rules (agents.defaults.sandbox.prune) はブラウザコンテナにも適用されます。
カスタム サンドボックス イメージ
独自のイメージをビルドし、設定で指定してください:ツール ポリシー(許可 / 拒否)
denyはallowより優先されます。allowが空の場合:拒否を除くすべてのツールが利用可能です。allowが非空の場合:allow内のツールのみが利用可能です(拒否を除く)。
プルーン戦略
2 つの設定:prune.idleHours:X 時間使用されていないコンテナを削除(0 = 無効)prune.maxAgeDays:X 日より古いコンテナを削除(0 = 無効)
- 忙しいセッションを維持しつつ寿命を制限:
idleHours: 24,maxAgeDays: 7 - プルーンしない:
idleHours: 0,maxAgeDays: 0
セキュリティ注記
- ハード ウォールは ツール(exec/read/write/edit/apply_patch)にのみ適用されます。
- browser/camera/canvas などのホスト専用ツールは、既定でブロックされます。
- サンドボックスで
browserを許可すると 分離が破壊 されます(ブラウザーがホストで実行されます)。
トラブルシューティング
- イメージが見つからない:
scripts/sandbox-setup.shでビルドするか、agents.defaults.sandbox.docker.imageを設定してください。 - コンテナが実行されない:必要に応じて、セッションごとに自動作成されます。
- サンドボックス内の権限エラー:
docker.userを、マウントされたワークスペースの所有者に一致する UID:GID に設定してください (またはワークスペース フォルダーを chown してください)。 - カスタムツールが見つかりません: OpenClawは
sh -lc(ログインシェル) を使用してコマンドを実行します。/etc/profileをソースにしてPATHをリセットすることができます。 カスタム ツールが見つからない:OpenClaw はsh -lc(ログイン シェル)でコマンドを実行し、/etc/profileを読み込むため PATH がリセットされる場合があります。docker.env.PATHを設定して カスタム ツールのパス(例:/custom/bin:/usr/local/share/npm-global/bin)を先頭に追加するか、 Dockerfile 内で/etc/profile.d/配下にスクリプトを追加してください。 カスタム ツールが見つからない:OpenClaw はsh -lc(ログイン シェル)でコマンドを実行し、/etc/profileを読み込むため PATH がリセットされる場合があります。docker.env.PATHを設定して カスタム ツールのパス(例:/custom/bin:/usr/local/share/npm-global/bin)を先頭に追加するか、 Dockerfile 内で/etc/profile.d/配下にスクリプトを追加してください。