OpenClaw Docker部署避坑指南:服务启动成功但网页打不开?

最近尝试在 Windows 上使用 Docker 部署 OpenClaw,本以为是一路绿灯,结果却在最后一步卡住了------明明容器日志显示"一切正常",浏览器却始终无法访问。经过一番折腾,终于找到了症结所在。如果你也遇到了同样的问题,希望这篇博客能帮你省下排查的时间。

现象:一切看起来都很完美

按照官方文档,我使用以下命令启动了容器:

bash 复制代码
docker run -d `
  --name openclaw `
  --restart always `
  -p 18789:18789 `
  -v D:\OpenClaw\config:/app/config `
  openclaw:latest

容器成功启动,查看日志,一切看起来都很完美:

gateway listening on ws://127.0.0.1:18789, ws://::1:18789 (PID 14)
heartbeat started
health-monitor started

端口映射也确认无误:

bash 复制代码
docker port openclaw
18789/tcp -> 0.0.0.0:18789
18789/tcp -> [::]:18789

然而,当我信心满满地在浏览器中打开 http://127.0.0.1:18789 时,迎接我的却是无尽的"无法访问此网站"。

诊断:被忽略的关键日志

问题出在哪里?我反复检查了防火墙、端口占用,甚至重装了 Docker Desktop,都无济于事。直到我再次仔细观察日志,才发现了一个被忽略的关键信息:

[gateway] listening on ws://127.0.0.1:18789

这里的 127.0.0.1 指的是容器内部的本地回环地址。这意味着 OpenClaw 的网关服务只接受来自容器"自己"的连接,而拒绝了来自外部(也就是你的 Windows 宿主机)的请求。

尽管 Docker 的端口映射(-p 18789:18789)已经把"大门"打开了,但门后的服务却只允许"自己人"通过,导致外部的请求被拒之门外。

解决方案:让服务监听所有接口

问题的根源找到了,解决起来就非常简单了。我们需要修改 OpenClaw 的配置,让它从监听 127.0.0.1 改为监听所有网络接口(0.0.0.0)。

OpenClaw 提供了一个便捷的命令来完成这个操作:

  1. 修改配置

    在 PowerShell 中执行以下命令,告诉网关绑定到局域网(LAN):

    bash 复制代码
    docker exec openclaw openclaw config set gateway.bind lan
  2. 重启服务

    让新的配置生效:

    bash 复制代码
    docker restart openclaw
  3. 验证访问

    等待十几秒让服务重启完成,然后再次刷新浏览器 http://127.0.0.1:18789。此时,你应该就能看到 OpenClaw 的登录界面了。

总结

这次踩坑经历提醒我们,在 Docker 部署中,端口映射成功 并不等于服务可以被外部访问 。当遇到类似问题时,不妨多留意一下服务启动日志中的 listening on 信息,确认它监听的是 127.0.0.1 还是 0.0.0.0,这往往是解决问题的关键线索。

相关推荐
冬奇Lab10 小时前
Agent 系列(23):Web Agent——让 Agent 真正浏览网页
人工智能·llm·agent
冬奇Lab10 小时前
每日一个开源项目(第135篇):codebase-memory-mcp - 给 AI Agent 一张代码库的知识图谱
人工智能·开源·llm
IT_陈寒13 小时前
JavaScript的闭包把我坑惨了,说好的内存会自动回收呢?
前端·人工智能·后端
jooloo16 小时前
Codex 间歇性 400 之谜:一条对话里,它为什么有时候用 chat/completions,有时候切到 responses?
人工智能
用户51914958484517 小时前
OpenSSL PKCS#12 PBMAC1 堆栈缓冲区溢出漏洞 (CVE-2025-11187) 分析与验证
人工智能·aigc
用户51914958484518 小时前
HP Sound Research SECOMNService 权限提升漏洞利用工具
人工智能·aigc
用户0183493016918 小时前
给 AI 智能体能力包一层 BFF,前端只调一个接口
人工智能
这token有力气21 小时前
Function Calling 格式漂移
人工智能