2026 OpenClaw 進階部署:在 Mac 雲端主機配置 Docker Sandboxes 實現工具子容器隔離
OpenClaw 呼叫工具(程式碼執行、網頁擷取、Shell 指令)時,預設在宿主機程序中運行——一旦遭遇惡意指令或供應鏈攻擊,後果不堪設想。本文詳解 Docker Sandboxes 隔離機制,提供 4 步可複現啟用清單,以及卷權限 uid 1000 與 Mac 雲端網路問題的完整避坑指南(2026 最新)。
目錄
2026 安全警示:為什麼 AI Agent 工具執行必須隔離?
OpenClaw 的核心能力是呼叫工具完成自動化任務。但若工具在宿主機程序中不加限制地運行,以下場景都可能造成嚴重後果:
- 惡意 ClawHub Skill:第三方技能包可能攜帶惡意程式碼,直接存取宿主機檔案系統與網路。
- 提示詞注入攻擊:攻擊者誘導模型執行危險 Shell 指令(如
rm -rf或資料外洩指令碼)。 - 依賴鏈污染:第三方函式庫被篡改,在安裝或運行時執行惡意邏輯。
- 資源濫用:失控的工具呼叫消耗宿主機 CPU/記憶體,導致其他服務不可用。
⚠️ 2026 警示:CVE-2026-25253 已證實 OpenClaw 某些版本在不開啟 Sandbox 模式時,工具子程序可透過路徑遍歷存取宿主機的
~/.openclaw/keys/ 目錄。強烈建議生產環境全部開啟 Docker Sandboxes。原理與前置:Docker Sandboxes 工作方式
啟用 Sandbox 模式後,每次工具呼叫流程如下:
- 網關接收工具呼叫請求(如
run_python) - OpenClaw 使用 Docker CLI 拉起臨時子容器(基於官方沙箱映像)
- 工具程式碼在子容器內執行,受限於容器的檔案系統、網路命名空間和資源上限
- 執行結果透過 stdout/stderr 返回給網關,容器隨即銷毀
前置要求(Mac 雲端主機)
- Docker Desktop for Mac 已安裝並運行(版本 ≥ 4.28)
- OpenClaw 版本 ≥ v2026.1.0(支援
OPENCLAW_INSTALL_DOCKER_CLI=1) - 宿主機用戶對 Docker socket 有存取權限(
/var/run/docker.sock) - Mac 雲端節點記憶體 ≥ 16GB
💡 架構說明:Sandboxes 與 OpenClaw 的 Docker Compose 部署不衝突。即使 OpenClaw 網關本身跑在容器中,仍可透過掛載
/var/run/docker.sock 的方式在宿主機上啟動工具子容器(DooD 模式)。4 步可複現清單:在 Mac 雲端啟用工具子容器隔離
步驟 1:重新安裝 OpenClaw 並啟用 Docker CLI 支援
openclaw stop 2>/dev/null || true
OPENCLAW_INSTALL_DOCKER_CLI=1 npm install -g openclaw@latest
openclaw --version
openclaw doctor | grep -i sandbox
預期輸出中應看到 sandbox: docker 或 tool-runner: docker。
步驟 2:確認 Docker socket 可存取
docker info | head -5
ls -la /var/run/docker.sock
步驟 3:預先拉取沙箱基礎映像
docker pull openclaw/sandbox:latest
docker run --rm openclaw/sandbox:latest echo "sandbox ok"
步驟 4:啟動 OpenClaw 並驗證 Sandbox 模式
launchctl kickstart -k gui/$(id -u)/com.openclaw.gateway
openclaw status && openclaw doctor
docker ps -a | grep openclaw-sandbox
排障與優化:uid 1000 權限與網路問題
問題 1:Permission denied — uid 1000 卷權限
# 修復:將工作目錄所有者改為 uid 1000
sudo chown -R 1000:1000 ~/.openclaw/sandbox-workspace/
問題 2:沙箱容器內 DNS / 網路不通
docker run --rm openclaw/sandbox:latest nslookup google.com
# 若失敗,在 Docker Desktop Engine 設定中新增:
# {"dns": ["8.8.8.8", "1.1.1.1"]}
# 重啟 Docker Desktop 後重試
出站策略建議(生產環境)
| 場景 | 推薦網路策略 | 配置方式 |
|---|---|---|
| 純計算執行 | none(完全斷網) | --network none |
| 網頁擷取工具 | bridge(受控出站) | 預設 bridge + 防火牆規則 |
| 內部 API 呼叫 | 自訂 Docker 網路 | docker network create openclaw-internal |
可引用技術參數
- 沙箱容器啟動延遲:M4 Mac mini 冷啟動約 200–400ms;映像已快取時約 50–150ms。
- 資源上限建議:單個沙箱容器建議
--memory 512m --cpus 0.5。 - 記憶體需求(含 Sandbox):網關 ~500MB + 每個並發沙箱 ~512MB,M4 Mac mini 16GB 可安全運行 4–6 個並發工具呼叫。
- OPENCLAW_INSTALL_DOCKER_CLI=1:安裝時間較標準安裝增加約 2–3 分鐘。
- uid 1000:官方沙箱映像的預設運行使用者,所有掛載目錄需提前
chown 1000:1000。
常見問題 FAQ
Q:開啟 Sandbox 後工具呼叫是否變慢?
有輕微延遲增加(約 200–400ms/次冷啟動),對大多數自動化場景影響可忽略。可使用 keep-alive 預熱容器池將延遲降至 50ms 以內。
Q:Sandbox 模式與 OpenClaw Docker Compose 部署相容嗎?
完全相容。在 Compose 檔案中將 /var/run/docker.sock 掛載到 OpenClaw 容器內,即可啟用 DooD 模式。
Q:如何確認工具呼叫確實在沙箱中運行?
在工具呼叫期間同時在另一終端執行 docker ps | grep openclaw-sandbox,若能看到臨時容器則確認在沙箱中運行。
Docker Sandboxes 以可接受的輕微延遲代價,換來了工具執行面的完整收斂。VPSMAC 的 M4 Mac 雲端主機提供充足的統一記憶體(最高 64GB)和原生 Docker Desktop 支援,是部署 Sandboxes 模式的理想底座。