対象:公式 Docker 手順を読んでも、ローカルビルドのタイムアウト、GHCR の pull 失敗、18789 のポート衝突、Skills を止めるボリューム権限の間を行き来し、clone から Control UI まで一本の順序がないエンジニア。成果:docker-setup.sh と任意の OPENCLAW_IMAGE に統一し、Docker 本番、Docker ネットワーク、ボリューム/権限と分担する。構成:六つの落とし穴、表、六ステップ Runbook、分診表、三 KPI、まとめ。
公式フローは Docker Engine・Compose・ディスク・出口が揃う前提です。npm グローバルや別 checkout の compose と混ぜると「OpenClaw が壊れた」に見えます。2025–2026 で多い六つ:
docker build を強いる一方、OPENCLAW_IMAGE に切り替えない。docker-setup.sh が Control UI をバインドできない。~/.openclaw 権限—Skills/状態の書き込みは失敗するのに UI は「無反応」に見える。compose pull の無限ループではない。OPENCLAW_IMAGE(GHCR)変更チケットでは主経路を一つ選び、もう一方のロールバックを文書化—口頭の混線を避ける。
| 観点 | デフォルトのソースビルド | OPENCLAW_IMAGE で GHCR を pull |
|---|---|---|
| 向く場面 | Dockerfile の独自編集、ビルドキャッシュ調査、ghcr 出口がない | UI まで最短、帯域制約、イメージはキャッシュしてリポは薄い CI |
| 前提 | 十分な CPU/RAM;レイヤキャッシュ用の GB 級の余裕 | ghcr.io または社内ミラーに到達;裸の latest だけでなくタグを pin |
| リスク | ビルドタイムアウト、キャッシュ肥大、CPU 競合 | 認証/レート、タグのドリフト、バイナリとの設定ずれ |
| ロールバック | 事前ビルドイメージへ切替、データボリュームのパスは同じ | 前の digest へ戻すかソースビルドへ;compose 変更をログに残す |
注: アップストリームは変わります。以下はリポジトリ直下に docker-setup.sh がある checkout を想定—fork が違えばコミットとスクリプトパスを記録してください。
docker version と Compose v2;レイヤ/ボリューム用ディスク(本番のリソース表と揃える)。docker-setup.sh が実行可能か(必要なら chmod +x)。export OPENCLAW_IMAGE=ghcr.io/openclaw/openclaw:latest—本番では digest か安定タグを pin、タグだけ追いかけない。./docker-setup.sh;ログに pull/build と compose up が出て、すぐ非ゼロ終了しないこと。http://127.0.0.1:18789(リビジョンでポートが変わればそのビルドに従う);接続拒否ではなくページが載ること。# GHCR の事前ビルドを優先(タグはポリシーに合わせて置換) export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest" ./docker-setup.sh # 成功後、Control UI が載るはず(例:ポート 18789) # open http://127.0.0.1:18789
上から順に。イメージ・ネットワーク・ボリュームを同時に変えない。
| 症状 | まず確認 | 併読 |
|---|---|---|
| ビルドタイムアウト/OOM | OPENCLAW_IMAGE へ切替;buildkit の並列を抑える;キャッシュ整理 | Docker 本番(リソース) |
| pull で 401/403/TLS | ghcr.io のプロキシ許可;社内ミラー—npm レジストリだけではない | Npm インストール Runbook(プロキシ) |
address already in use :18789 | docker ps で古いコンテナ;古い compose を止めるかドキュメント通りにポート変更 | Docker ネットワーク |
| ボリューム書き込みで permission denied | ホスト UID/GID とコンテナユーザー;名前付き/bind の違い | ボリューム/Skills チェックリスト |
| UI は開くがチャンネルが無音 | モデル/チャンネル層を切り分け;その後 token/WS コード | ペアリング/token |
~/.openclaw(またはチームパス)を compose のマウントに対応づけ;アップグレード前後でサイズと権限をスナップショット。アップストリームのリリースノートと矛盾したらアップストリームを正とする;本稿はエンジニアリング上のチェックポイントです。
スリープ、断片化したディスク、Docker Desktop の残骸は、専用 CPU・安定した出口・監査可能なボリューム・token の境界と衝突します。digest を pin せず、ボリューム契約もヘルスチェックもない短命コンテナは、本番トラフィックで最初に落ちます。
安定した Apple Silicon で Gateway を長期運用するチームは、この最短ループのあと、多地域と柔軟なレンタル期間の MACCOME クラウド Mac が向きます—公開のレンタル料金とヘルプセンターを、Docker 本番とペアリング記事と併せて確認してください。
パイロット:専用リモートホストで六ステップをすべて実行し、digest とボリュームのスナップショットを記録してから、月次/四半期の条件と監視を決める。
FAQ
本稿と Docker 本番、どちらを先に?
初めて UI まで通す経路は本 Runbook;変更窓、ロールバック、監視は本番へ。料金:Mac mini レンタル料金。
OPENCLAW_IMAGE は npm グローバル CLI と衝突する?
衝突はポート・環境変数・データディレクトリに集まる;ホストあたり主 Gateway は一つ。移行の順序:npm インストール Runbook。
18789 を公開インターネットに晒していい?
手前にリバースプロキシと TLS—0.0.0.0 に盲目的にバインドせず、本番/リバプロ記事のセキュリティ節を読む。ヘルプ:クラウド Mac サポートとヘルプセンター。