从语言对话,到本地小助手,人工智能大模型在这几年的时间里有了质的飞跃。本文主要介绍一下OpenClaw的Docker本地化部署方案,因其非常高的操作、读写权限,因此它的本地化的最终形态,必然是封装在一个虚拟化的环境里,通过容器或者虚拟机来对其权限进行约束,以此来加强其安全性。这里我们使用的环境是Win11+WSL2+Docker,本地显卡为3080系列。
关于Ollama的部署问题,可以参考之前的这篇文章,在大模型部署篇已经讲过,这里不再赘述。需要提醒的是,已经安装过Ollama的童鞋,需要把Ollama升级到最新版。安装完成后,通过Ollama配置好本地模型,我个人比较推荐的是qwen3.5(带tools的版本):
这个模型在Ollama运行阶段,大概会消耗10GB左右的显存/内存。具体指令如下:
> ollama pull qwen3.5:latest
大家可以针对自己本地的硬件条件做模型的选择,如果是8GB显存的GPU卡,建议可以选择再小一些的模型。或则按照之前的方案,部署一个KTransformer用于推理,理论上也是可行的,不过这里暂时使用Ollama作为示例。
需要说明的是,这里我们的安装方案,是图方便把Ollama直接安装在宿主机了,理论上应该像KTransformer一样装在Docker里边,通过虚拟化进行管理,会更合适。
需要在Ubuntu的Linux子系统中建立一个空目录,然后依照如下顺序安装一个pnpm:
GPT plus 代充 只需 145$ mkdir nodejs $ cd nodejs/ $ curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - $ sudo apt-get install -y nodejs $ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
安装成功后可以看到版本号:
$ node --version v20.20.1 $ npm --version 11.8.0
然后用npm安装我们所需的pnpm:
GPT plus 代充 只需 145$ npm install -g pnpm $ pnpm --version 10.31.0 $ pnpm install
安装完成后,就可以正式开始部署OpenClaw了。
在Win11上打开一个Ubuntu Linux的子系统窗口,下载openclaw的仓库源代码:
$ git clone https://github.com/openclaw/openclaw.git $ cd openclaw/
直接运行:
GPT plus 代充 只需 145$ ./docker-setup.sh
理论上来说,如果环境配置的没有问题,<网络也很通畅>的话,是可以直接运行成功的。所以如果这一步运行没有问题,本章节后面的内容就不用看了。如果有遇到一些报错信息,这里逐个排查。
如果发生报错:
=> ERROR resolve image config for docker-image://docker.io/docker/dockerfile:1.7
那就把Dockerfile中的第一行内容删掉:
GPT plus 代充 只需 145# syntax=docker/dockerfile:1.7
如果因为网络问题,导致下载过程报错,可以在Docker的配置文件daemon.json中添加如下配置:
"registry-mirrors": ["https://docker.1ms.run"]
如果遇到frozen-lockfile的报错:
GPT plus 代充 只需 145ERR_PNPM_OUTDATED_LOCKFILE Cannot install with "frozen-lockfile" because pnpm-lock.yaml is not up to date with
/package.json
这个问题是由于npm和pnpm的环境没有配置好,需要按照上一个章节中的配置命令进行相应的模块安装。
如果一切都没有问题,执行Docker的构建,你会得到:
==> Starting gateway [+] Running 1/0 ✔ Container openclaw-openclaw-gateway-1 Running 0.0s [+] Creating 1/0 ✔ Container openclaw-openclaw-gateway-1 Running0.0s (node:7) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead. (Use `node --trace-deprecation ...` to show where the warning was created) Config overwrite: /home/node/.openclaw/openclaw.json (sha256 65de -> edbd, backup=/home/node/.openclaw/openclaw.json.bak) Gateway running with host port mapping. Access from tailnet devices via the host's tailnet IP. Config: /home/xxx/.openclaw Workspace: /home/xxx/.openclaw/workspace Token: fbf6 Commands: docker compose -f /mnt/k/openclaw/docker-compose.yml logs -f openclaw-gateway docker compose -f /mnt/k/openclaw/docker-compose.yml exec openclaw-gateway node dist/index.js health --token "819e"
到这一步,OpenClaw的界面就可以打开了:
不过这里界面上还是会有一些报错,这是因为我们还没有完成本地模型的配置,所以会话窗口无法识别到本地的大模型。我们在下一个章节中,继续介绍一下这个问题的解决方案。
然后按照上述启动的指令,就完成了Docker镜像的启动,然后可以通过docker attach或者VSCode的插件进入到容器内部。然后查看openclaw的版本:
GPT plus 代充 只需 145$ openclaw --version OpenClaw 2026.3.8
根据需求,配置一下openclaw.json的内容,以下是我的配置清单,比较重点的就是本地模型部分的配置参数:
{ "meta": { "lastTouchedVersion": "2026.3.8", "lastTouchedAt": "2026-03-10T07:12:39.442Z" }, "wizard": { "lastRunAt": "2026-03-10T07:12:39.438Z", "lastRunVersion": "2026.3.8", "lastRunCommand": "onboard", "lastRunMode": "local" }, "models": { "providers": { "ollama": { "baseUrl": "http://127.0.0.1:xxxxx/v1", "apiKey": "ollama-local", "api": "openai-completions", "models": [ { "id": "your_model", "name": "your_model", "reasoning": true, "input": ["text"], "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }, "contextWindow": 32768, "maxTokens": 32768 } ] } } }, "agents": { "defaults": { "model": { "primary": "ollama/your_model" }, "models": { "ollama/your_model": {} }, "workspace": "/home/node/.openclaw/workspace", "compaction": { "mode": "safeguard" }, "maxConcurrent": 4, "subagents": { "maxConcurrent": 8 }, "sandbox": { "mode": "off" } } }, "tools": { "profile": "coding" }, "messages": { "ackReactionScope": "group-mentions" }, "commands": { "native": "auto", "nativeSkills": "auto", "restart": true, "ownerDisplay": "raw" }, "session": { "dmScope": "per-channel-peer" }, "gateway": { "port": 18789, "mode": "local", "bind": "auto", "controlUi": { "allowedOrigins": [ "http://localhost:xxx", "http://127.0.0.1:xxx" ] }, "auth": { "mode": "password", "token": "c9b9", "password": "xxx" }, "tailscale": , "nodes": { "denyCommands": [ "camera.snap", "camera.clip", "screen.record", "contacts.add", "calendar.add", "reminders.add", "sms.send" ] } } }
重启Docker容器,可以查看到相应的openclaw容器:
GPT plus 代充 只需 145$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES xxxx openclaw:local "docker-entrypoint.s…" 18 hours ago Up 18 hours (healthy) xxx:xxx-xxx->xxx-xxx/tcp openclaw-openclaw-gateway-1
如果继续使用docker attach或者vscode插件进入到容器内部,可以查看到openclaw现已加载的模型:
$ openclaw models list 🦞 OpenClaw 2026.3.8 (unknown) — Like having a senior engineer on call, except I don't bill hourly or sigh audibly. Model Input Ctx Local Auth Tags ollama/qwen3.5:latest text 32k no yes default,configured
这里链接到模型后,还会有一个本地配对的请求授权:
这个直接按照操作指引配置一下即可:
GPT plus 代充 只需 145$ openclaw devices list 🦞 OpenClaw 2026.3.8 (unknown) — Say "stop" and I'll stop—say "ship" and we'll both learn a lesson. │ ◇ Pending (1) ┌──────────────────────────────────────┬─────────────────────────────────────────────────────────────────────────────┬──────────┬────────────┬──────────┬────────┐ │ Request │ Device │ Role │ IP │ Age │ Flags │ ├──────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────┼──────────┼────────────┼──────────┼────────┤ │ e6dc │ 177f │ operator │ 172.18.0.1 │ just now │ │ └──────────────────────────────────────┴─────────────────────────────────────────────────────────────────────────────┴──────────┴────────────┴──────────┴────────┘ Paired (1) ┌───────────────────────────────────────────────────┬────────────┬─────────────────────────────────────────────────────────────────────┬────────────┬────────────┐ │ Device │ Roles │ Scopes │ Tokens │ IP │ ├───────────────────────────────────────────────────┼────────────┼─────────────────────────────────────────────────────────────────────┼────────────┼────────────┤ │ 250c │ operator │ operator.read, operator.admin, operator.write, operator.approvals, │ operator │ │ │ 5958 │ │ operator.pairing │ │ │ └───────────────────────────────────────────────────┴────────────┴─────────────────────────────────────────────────────────────────────┴────────────┴────────────┘ $ openclaw devices 177f 🦞 OpenClaw 2026.3.8 (unknown) — Making 'I'll automate that later' happen now. │ ◇ Approved 177f)
再回到主界面,就可以正常对话了:
例如简单点的任务,可以让他自己切换本地时区到北京时间:
甚至可以让它自己在本地配置一个Anaconda的环境:
配置完成后进入容器就可以看到安装的环境:
node@xxx:~/.openclaw$ /home/node/.conda/bin/conda env list # conda environments: # # * -> active # + -> frozen base /home/node/.conda python39_env /home/node/.conda/envs/python39_env
在容器内,基础的读写权限也是有的:
本文介绍了一种在Win11操作系统下,使用Docker部署OpenClaw的一种方案,并且Token由本地部署的Ollama加载开源的qwen3.5模型产生,实现零成本、相对安全可控的一种部署方案。当然,目前OpenClaw和Ollama的安全性还是有待提升,结合自己的情况,慎重部署!!!
本文首发链接为:https://www.cnblogs.com/dechinphy/p/openclaw.html
作者ID:DechinPhy
更多原著文章:https://www.cnblogs.com/dechinphy/
请博主喝咖啡:https://www.cnblogs.com/dechinphy/gallery/image/379634.html
- https://zhuanlan.zhihu.com/p/
- https://zhuanlan.zhihu.com/p/
- https://www.cnblogs.com/dechinphy/p//deepseek2
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/241873.html