2026 OpenClaw 官方 Docker 一鍵部署:`docker-setup.sh`、GHCR 與 Control UI(18789)實操 Runbook

約 13 分鐘閱讀 · MACCOME

誰會遇到問題:已讀過官方 Docker 文件,卻在本地構建映像超時、GHCR 拉取失敗、18789 埠被佔、卷權限導致 Skills 不可寫之間來回橫跳,缺少「從克隆到 Control UI」的一條龍順序。本文結論:docker-setup.sh + 可選 OPENCLAW_IMAGE 固定最短路徑,並與《Docker 生產 Runbook》《Docker 網路分診》《資料卷與權限》分工。結構:六類坑 → 對照表 → 六步 Runbook → 失敗分診表 → 三 KPI → 轉化收束。

為什麼「照文件跑」仍會在 Docker 路徑上卡住?

官方 Docker 流程依賴本機 Docker Engine、Compose、磁碟與網路出口的一致性;任何一條與團隊內「npm 全域性安裝」或「另一套 compose 目錄」混用,都會把症狀偽裝成「OpenClaw 壞了」。下面六條是 2025–2026 年社群反饋裡最常打斷最短閉環的因素。

  1. 未區分「原始碼構建」與「拉取 GHCR」:在 CI 或弱網環境強行本地 docker build,超時後沒有切到 OPENCLAW_IMAGE,誤以為映像壞了。
  2. 舊容器仍佔用 18789:上一次試驗的 compose 專案未停乾淨,新的 docker-setup.sh 無法繫結 Control UI 埠。
  3. 卷掛載 UID 不匹配:容器內使用者與宿主機 ~/.openclaw 目錄權限不一致,Skills 或狀態寫入失敗,卻只在 UI 上看到「無響應」。
  4. 把配對問題誤判為映像問題:WebSocket 報錯與 token 覆蓋應走《Gateway 配對與 Token》,而不是反覆 compose pull
  5. 企業代理只放行 npm registry:拉取 ghcr.io 被攔,需要按網路策略改走內部映像或白名單主機名,與《安裝指令碼與 npm 軌》中的代理診斷同源。
  6. 在同一主機混跑生產與試驗目錄:多個 checkout 共用同名卷或環境變數,導致「偶發讀到舊 token」。

表 1:本地構建 vs 使用 OPENCLAW_IMAGE(GHCR 預構建)

在評審單裡勾選其一作為主路徑,另一路徑寫進回滾腳註,避免口頭混用。

維度預設原始碼構建路徑OPENCLAW_IMAGE 拉取 GHCR
適用場景需要改 Dockerfile、除錯構建快取或內網無 ghcr 出口時希望最短時間上屏、頻寬有限或 CI 只快取映像不快取原始碼時
前置條件本機構建資源充足;磁碟預留多 GB 層快取能訪問 ghcr.io 或內部映像同步;可固定 tag 而非只寫 latest
典型風險構建超時、層快取膨脹、CPU 爭用鑑權/限速、tag 漂移、與本地配置版本不完全對齊
回滾思路切到預構建映像並保留同一資料卷路徑回到上一 tag 的 digest 或改回原始碼構建;記錄 compose 變更單
info

提示:官方倉庫與文件會迭代;下文命令以「克隆 openclaw 倉庫後根目錄存在 docker-setup.sh」為前提,若你分支結構不同,請在變更單裡寫明 commit 與指令碼路徑。

六步 Runbook:從克隆到可訪問 Control UI(18789)

  1. 自檢 Docker:docker version 與 Compose v2;預留至少數 GB 磁碟給映像層與卷(與《Docker 生產》中的資源表對齊)。
  2. 克隆官方倉庫並進入根目錄:確保 docker-setup.sh 可執行(必要時 chmod +x)。
  3. (可選)匯出預構建映像:export OPENCLAW_IMAGE=ghcr.io/openclaw/openclaw:latest(生產建議 pin 到具體 digest 或穩定 tag,而非僅依賴「moving」標籤)。
  4. 執行一鍵指令碼:./docker-setup.sh;觀察日誌是否完成 pull/build 與 compose up,無立即退出碼非零。
  5. 開啟 Control UI:瀏覽器訪問 http://127.0.0.1:18789(若文件版本變更埠,以你檢出版本為準);確認頁面載入而非連線被拒絕。
  6. 最短驗證:在 UI 或 CLI 執行官方建議的健康檢查;若需配對,進入《配對與 Token》按症狀樹操作,而不是先改業務配置。
bash
# 例:優先使用 GHCR 預構建映像(按組織映像策略替換 tag)
export OPENCLAW_IMAGE="ghcr.io/openclaw/openclaw:latest"
./docker-setup.sh

# 指令碼完成後,本機應能訪問 Control UI(預設示例埠 18789)
# open http://127.0.0.1:18789

表 2:常見失敗症狀 → 優先檢查項(分診順序)

從上到下排查;若一層已確認無問題再進入下一層,避免同時改映像、網路和卷。

症狀優先檢查常與哪篇並讀
構建階段超時或 OOM改走 OPENCLAW_IMAGE;或限制並行 builder、清理 buildkit 快取《Docker 生產》資源章節
pull 報 401/403 或 TLS企業代理、ghcr.io 白名單、內部映像同步;勿與 npm registry 混為一談《安裝指令碼與 npm 軌》代理節
address already in use :18789docker ps 找舊容器;停 compose 專案或改埠對映(需與文件一致)《Docker 網路分診》
容器內 Permission denied 寫卷宿主機目錄 UID/GID、命名卷 vs bind mount;《資料卷與權限》對照表《資料卷與 Skills》
UI 開啟但通道無回覆先排除模型與通道層;再看 token 與 WS 錯誤碼《配對與 Token》

三條應寫進變更單與面板的「硬核」口徑

  1. 映像標識:記錄 映像倉庫 + tag + digest(若可獲取),而不僅是「用了 latest」;回滾時按 digest 對齊。
  2. Control UI 可達性:把「HTTP 200 / 頁面標題 / 健康檢查透過」寫成布林門檻,與「容器程序在」分離,避免誤判。
  3. 卷路徑合同:明確宿主機 ~/.openclaw(或團隊約定路徑)與 compose 中掛載是否一一對應;升級前後做目錄大小與權限快照。

上述口徑與官方發行說明一致時,應以官方為準;本文提供工程落地時的檢查表位。

為什麼「個人筆記本上試一下 Docker」難直接變成生產 Gateway

筆記本環境常有睡眠、磁碟碎片與多版本 Docker Desktop 試驗殘留,和獨佔算力、固定出口、可審計卷與 token 邊界的生產要求相沖突。僅依賴臨時容器而不固化映像 digest、卷合同與健康檢查,會在第一次真實流量時暴露配對與權限問題。

對需要把 Gateway 長期跑在穩定 Apple Silicon 上、並保留清晰資料目錄與監控的團隊,MACCOME 的 Mac 雲主機提供多地區節點與彈性租期,便於與本文 Runbook 的「最短閉環」銜接後再做常駐加固;建議先閱讀公開價格與幫助中心,再與《Docker 生產》《配對與 Token》一起做變更評審。

試點:在獨佔遠端機上跑通六步並記錄映像 digest 與卷快照,再決定是否合併到月租/季租與監控告警。

常見問題

應該先讀本文還是《Docker 生產 Runbook》?

需要「第一次跑通 UI」先按本文六步;要把 Gateway 放進生產變更窗、回滾與監控,再並讀《Docker 生產》。價格見 租賃價格說明

OPENCLAW_IMAGE 和 npm 全域性安裝的 CLI 會衝突嗎?

衝突點多在埠、環境變數與資料目錄;同一臺機只應有一套「主 Gateway」配置。遷移順序見 安裝指令碼與 npm 軌

18789 能改成對外訪問嗎?

若需公網或內網統一入口,應疊加反代與 TLS 策略,與《Docker 生產》及既有反代類文章的安全段落一起評審,而不是直接綁 0.0.0.0。通用說明見 幫助中心