OpenClaw Docker 完整部署教學:容器化 AI 助理詳細配置指南
本文說明:本教學深入講解 OpenClaw 的 Docker 容器化部署,相比直接安裝,Docker 方式的優勢是環境隔離、跨平台一致、易於備份遷移。本文涵蓋單容器部署、Docker Compose 配置、持久化資料管理、多架構支援(AMD64/ARM64)、代理設定等進階主題,適合有一定 Docker 基礎的用戶。
為什麼選擇 Docker 部署 OpenClaw?
直接安裝 OpenClaw 雖然簡單,但在某些場景下 Docker 容器化部署更有優勢。以下是兩種方式的全面比較:
Docker 部署的優勢
- 環境完全隔離,不影響主機系統
- 跨平台一致性,同一設定在任何機器都能用
- 一鍵備份與遷移(只需打包 Volume)
- 多版本並行(測試版 + 穩定版)
- 資源限制更精確(CPU/RAM 上限)
- 與 CI/CD 管線無縫整合
Docker 部署的注意事項
- Browser Control 功能需要額外配置
- 存取主機檔案需要 Volume 掛載設定
- GUI 相關功能在 headless 容器有限制
- 額外的網路設定(Port 映射)
適合使用 Docker 部署的場景:VPS 雲端主機(讓多個服務共存)、家庭 NAS(Synology/QNAP 支援 Docker)、企業內網部署、需要快速復原的生產環境、開發測試多版本並行。
系統需求與 Docker 版本確認
# 確認 Docker 版本(需要 20.10 以上)
docker --version
docker compose version # 需要 v2.0 以上(注意:是 docker compose,不是 docker-compose)
# 確認 Docker 服務運行中
docker info
# 確認架構(AMD64/ARM64)
docker info | grep Architecture
# OpenClaw Docker 映像支援 linux/amd64 和 linux/arm64
方法一:Docker 直接運行(快速測試)
最快速的方式是直接用 docker run 啟動 OpenClaw,適合快速測試:
# 建立 OpenClaw 資料目錄
mkdir -p ~/openclaw-data
# 使用 Docker 運行 OpenClaw
docker run -d \
--name openclaw \
--restart unless-stopped \
-p 18789:18789 \
-v ~/openclaw-data:/home/openclaw/.openclaw \
-e ANTHROPIC_API_KEY="sk-ant-api03-你的金鑰" \
ghcr.io/openclaw/openclaw:latest \
openclaw gateway start
# 確認容器運行狀態
docker ps | grep openclaw
docker logs openclaw -f # 查看日誌
注意:直接在指令中傳入 API 金鑰有安全風險(會顯示在 docker ps 中)。正式部署建議使用下面的 Docker Compose 搭配 .env 檔案儲存敏感資訊。
方法二:Docker Compose 完整部署(推薦)
Docker Compose 方式更適合正式部署,配置清晰、易於管理:
第一步:建立專案目錄結構
mkdir -p ~/openclaw-docker/{data,config,logs}
cd ~/openclaw-docker
第二步:建立 .env 環境變數檔案
# 建立 .env 檔(敏感資訊不放進 compose.yml)
cat > .env <<'EOF'
ANTHROPIC_API_KEY=sk-ant-api03-你的Anthropic金鑰
OPENAI_API_KEY=sk-proj-你的OpenAI金鑰(可選)
OPENCLAW_GATEWAY_PORT=18789
TELEGRAM_BOT_TOKEN=你的Telegram Bot Token(可選)
EOF
# 保護 .env 檔案(僅當前用戶可讀)
chmod 600 .env
第三步:建立 docker-compose.yml
cat > docker-compose.yml <<'EOF'
services:
openclaw:
image: ghcr.io/openclaw/openclaw:latest
container_name: openclaw
restart: unless-stopped
ports:
- "${OPENCLAW_GATEWAY_PORT:-18789}:18789"
environment:
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- OPENAI_API_KEY=${OPENAI_API_KEY}
volumes:
# 持久化 OpenClaw 狀態資料(記憶、設定、Skills)
- ./data:/home/openclaw/.openclaw
# 選配:掛載主機特定目錄供 OpenClaw 存取
- /home/${USER}/Documents:/host/Documents:ro
command: openclaw gateway --port 18789
mem_limit: 2g
cpus: "2.0"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:18789/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
logging:
driver: "json-file"
options:
max-size: "50m"
max-file: "5"
EOF
第四步:啟動服務
# 啟動 OpenClaw(在背景運行)
docker compose up -d
# 查看狀態
docker compose ps
docker compose logs -f openclaw
# 查看 Gateway 是否正常
curl http://localhost:18789/health
持久化資料管理(最重要!)
OpenClaw 的記憶資料(memory)、設定(config)、自定義 Skills 都儲存在 ~/.openclaw/ 目錄。在 Docker 中必須正確掛載 Volume,否則容器重建後所有資料都會遺失:
# .openclaw 目錄結構說明
# ~/.openclaw/
# ├── config.json # 主要設定(API金鑰、模型選擇)
# ├── soul.md # AI 個性設定
# ├── memory/ # 持久化記憶(重要!必須保留)
# │ ├── facts.json
# │ └── conversations/
# ├── skills/ # 自定義 Skills
# │ └── my-skill.js
# └── logs/ # 運行日誌
# 備份整個 .openclaw 目錄
tar -czf openclaw-backup-$(date +%Y%m%d).tar.gz ./data/
# 還原備份
tar -xzf openclaw-backup-20260312.tar.gz
設定自動備份(crontab)
# 每天凌晨 3 點自動備份 OpenClaw 資料
0 3 * * * tar -czf ~/backups/openclaw-$(date +\%Y\%m\%d).tar.gz ~/openclaw-docker/data/ 2>&1
容器內執行 Onboarding 設定
Docker 容器啟動後,需要進入容器執行初始設定(或直接編輯設定檔案):
# 方法一:進入容器執行 onboard
docker compose exec openclaw bash
# 然後在容器內執行:
openclaw onboard # 不加 --install-daemon(容器已是常駐服務)
# 方法二:直接在容器外執行 openboard(不進入)
docker compose exec -it openclaw openclaw onboard
# 方法三:直接編輯設定檔(進階)
cat > ./data/config.json <<'EOF'
{
"model": "claude-opus-4-5",
"anthropic_api_key": "sk-ant-api03-...",
"gateway_port": 18789,
"channels": {
"telegram": {
"enabled": true,
"bot_token": "你的Bot Token"
}
}
}
EOF
# 重啟服務套用設定
docker compose restart openclaw
進階:在 Docker 容器中設定網路代理
台灣用戶使用 OpenClaw 呼叫 Claude/GPT API 時,建議透過 VPN07 加速連線。在 Docker 環境中設定代理有以下幾種方法:
方法一:透過環境變數設定代理
# 在 docker-compose.yml 的 environment 中加入
environment:
- HTTP_PROXY=http://主機IP:7890
- HTTPS_PROXY=http://主機IP:7890
- NO_PROXY=localhost,127.0.0.1
方法二:使用主機網路模式(最簡單)
# 在 docker-compose.yml 中加入(Linux 限定)
network_mode: "host"
# 容器直接使用主機網路,無需額外代理設定
# 前提:主機已安裝 VPN07 客戶端並設定系統代理
方法三:與 VPN07 容器組合使用
若你完全使用 Docker 環境,可以用 VPN 容器(如 gluetun)搭配 OpenClaw,讓所有 API 流量自動透過 VPN07 路由:
services:
vpn:
image: qmcgaw/gluetun
# VPN07 支援 OpenVPN 配置
cap_add: [NET_ADMIN]
devices: [/dev/net/tun]
environment:
- VPN_SERVICE_PROVIDER=custom
- VPN07_SERVER=... # VPN07 伺服器設定
openclaw:
network_mode: "service:vpn"
depends_on: [vpn]
Docker 部署的日常維護
升級到最新版 OpenClaw
# 拉取最新映像
docker compose pull
# 重建並重啟(保留資料 Volume)
docker compose up -d --force-recreate
監控容器資源使用
# 即時資源使用(CPU/RAM/網路)
docker stats openclaw
# 查看完整日誌(最近 100 行)
docker compose logs --tail=100 openclaw
清理舊映像節省磁碟空間
# 清理未使用的 Docker 資源(謹慎使用!)
docker image prune -f # 清理懸掛映像
docker system prune --volumes # 清理所有未使用資源(會刪除未命名 Volume!)
Docker 部署常見問題
❌ 容器找不到 ghcr.io/openclaw/openclaw 映像
若官方 Docker Hub / GHCR 映像尚未發布,可以從原始碼建置:
git clone https://github.com/openclaw/openclaw.git
cd openclaw
docker build -t openclaw:local .
# 然後在 compose.yml 中將 image 改為 openclaw:local
❌ 容器重建後記憶資料遺失
這是 Docker 新手最常犯的錯誤。確保 docker-compose.yml 中有 volumes 掛載設定,且每次重建時使用 docker compose up -d 而非 docker compose down -v(-v 旗標會刪除 Volume!)
⚠️ API 呼叫在容器中延遲偏高
Docker 容器的網路路由比直接安裝多一層 NAT 轉換,可能增加約 5-10ms 延遲。台灣到美國 API 伺服器的延遲本身就高達 150-200ms,加上容器網路開銷非常明顯。建議搭配 VPN07 使用日本節點,可將整體延遲降至 40-60ms,使容器化的 OpenClaw 達到最佳響應速度。VPN07 的千兆頻寬(1000Mbps)確保在高並發 API 呼叫時也不受限速影響。
進階:多實例並行部署
Docker 的最大優勢之一是可以輕鬆運行多個 OpenClaw 實例,例如為不同家庭成員各建立一個專屬 AI 助理,或是維持一個穩定版和一個測試版並行:
# 多用戶 docker-compose.yml 範例
services:
# 用戶 A 的 OpenClaw(使用 Telegram)
openclaw-alice:
image: ghcr.io/openclaw/openclaw:latest
container_name: openclaw-alice
restart: unless-stopped
ports:
- "18789:18789"
environment:
- ANTHROPIC_API_KEY=${ALICE_API_KEY}
volumes:
- ./alice-data:/home/openclaw/.openclaw
# 用戶 B 的 OpenClaw(使用 WhatsApp)
openclaw-bob:
image: ghcr.io/openclaw/openclaw:latest
container_name: openclaw-bob
restart: unless-stopped
ports:
- "18790:18789" # 不同的外部端口
environment:
- ANTHROPIC_API_KEY=${BOB_API_KEY}
volumes:
- ./bob-data:/home/openclaw/.openclaw
家庭多用戶方案
每個家庭成員擁有獨立的 AI 助理,記憶和偏好設定完全隔離,互不干擾。
穩定版 + 測試版
一個容器跑穩定版 OpenClaw 處理日常工作,另一個跑 beta 版測試新功能,互不影響。
工作 + 私人分離
工作用 AI 助理連接公司 Slack/Teams,私人 AI 助理連接個人 Telegram,完全分開管理。
Docker 部署安全最佳實踐
容器化部署帶來便利的同時,也需要注意安全性。以下是 OpenClaw Docker 部署的安全最佳實踐:
API 金鑰安全管理
永遠不要把 API 金鑰直接寫在 docker-compose.yml 中。使用 .env 檔案並加入 .gitignore,或使用 Docker Secrets(Swarm 模式)、HashiCorp Vault 等密鑰管理工具。
不以 Root 用戶運行
預設 Docker 容器以 root 運行有安全風險。在 Dockerfile 或 compose.yml 中設定 user: "1000:1000",以非特權用戶運行 OpenClaw。
限制容器網路存取
除非有外部存取需求,應設定 ports: ["127.0.0.1:18789:18789"] 僅允許本機存取,而非 0.0.0.0:18789 對外開放。配合 VPN07 加密隧道存取,安全性更高。
Volume 掛載最小權限
掛載主機目錄時,只讀取必要的目錄,並盡可能使用 :ro(唯讀)標記。例如:- /home/user/Documents:/host/Documents:ro 只允許 OpenClaw 讀取,不允許修改。
VPN07 讓 Docker 容器化 OpenClaw 高速穩定
Docker 用戶首選,容器環境 API 加速最佳化
Docker 容器化部署讓 OpenClaw 更靈活,支援多實例並行、快速備份遷移,但仍需要穩定快速的網路才能讓 AI 助理正常工作。VPN07 提供 1000Mbps 千兆頻寬、覆蓋 70+ 國家節點、穩定運營超過十年,自 2015 年創立至今服務全球百萬用戶,透過環境變數或主機代理方式輕鬆整合到 Docker 環境,讓你的容器化 OpenClaw 享受極速 API 連線。每月僅需 $1.5,30 天退款保障,零風險嘗試。