答案是容器内服务未监听0.0.0.0:8080或端口映射未生效:需进入容器执行netstat验证监听地址,将config.yaml中host改为0.0.0.0;检查docker port输出是否为“8080/tcp → 0.0.0.0:8080”;确保使用-p 8080:8080而非-p 8080;关闭或放行宿主机防火墙;确认容器NetworkMode为bridge而非host。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

OpenClaw部署后Docker容器状态显示up,日志里也没有报错,但浏览器访问http://localhost:8080始终空白或连接被拒绝——这不是前端代码问题,而是容器网络出口没打通,或者服务根本没监听在可访问的地址上。
确认容器内服务是否真正监听在0.0.0.0:8080
进入容器内部,执行:
docker exec -it openclaw-container /bin/sh -c "netstat -tlnp | grep :8080"
如果返回空,说明服务压根没起来,或监听地址写死了127.0.0.1:8080;OpenClaw默认配置可能只绑定了localhost,必须改造成0.0.0.0才能被宿主机访问。
检查OpenClaw的启动配置文件(通常是config.yaml或.env),把host字段从127.0.0.1改成0.0.0.0,或添加--host 0.0.0.0启动参数。不改这个,容器再健康也白搭。
验证端口映射是否生效
执行命令查看端口映射关系:
docker port openclaw-container
预期输出应为:
8080/tcp → 0.0.0.0:8080
若无任何输出,说明启动容器时漏掉了-p 8080:8080;若显示→ :::8080或127.0.0.1:8080,则表示只映射给了本地回环,外部无法访问。【必须用-p 8080:8080,不能只写-p 8080】
检查宿主机防火墙是否拦截
方法一:临时关闭防火墙测试
sudo ufw disable(Ubuntu/Debian)
sudo systemctl stop firewalld(CentOS/RHEL)
方法二:放行端口(推荐)
sudo ufw allow 8080
或
sudo firewall-cmd --permanent --add-port=8080/tcp && sudo firewall-cmd --reload
飞牛OS等定制系统常默认开启ufw且规则严格,不显式放行,8080会被静默丢弃。
排查容器网络模式是否异常
第一步:确认容器使用的是默认bridge网络
docker inspect openclaw-container | grep NetworkMode
第二步:如果输出是host,立刻停止容器并重建——OpenClaw不兼容host网络模式,会导致静态资源路径错乱、WebSocket连接失败等隐蔽问题。
第三步:强制指定bridge模式重启
docker run -d --name openclaw-container --network bridge -p 8080:8080 -v /path/to/data:/app/data openclaw/image:latest
某些一键脚本会误加--network host,这一步必须人工核对。


















