Docker部署避坑:OpenClaw容器内无法使用代理?网络模式选择建议

简介: 本文详解OpenClaw在Docker中代理失效的5大典型坑:环境变量未透传、YAML与环境变量冲突、Docker Desktop网络隔离、host网络模式误用、DNS解析失败,并提供可直接复用的docker-compose配置模板。(239字)

“在本地跑得好好的OpenClaw,一放到Docker容器里,代理就不生效了……”

“明明docker-compose.yml里配了环境变量,容器里curl也能通,但OpenClaw就是不走代理……”

“更离谱的是,容器能ping通外网,但OpenClaw一跑采集任务就报网络错误……”

如果你正在经历这些,别怀疑人生——这不是你的问题,是Docker网络和OpenClaw代理解析逻辑的“双重夹击”。我在这上面折腾了好几天,踩了不下5个坑,今天一次性帮你排完。
代理 IP 如何实现实时数据同步 (24).png

一、问题现象:容器内代理“失灵”的典型表现
先看看你是不是遇到了以下情况:

现象 可能原因
宿主机curl能通代理,容器内curl也能通,但OpenClaw报错 OpenClaw代理解析与Docker网络叠加问题
容器能ping通外网,但OpenClaw采集失败 代理环境变量未正确传递到OpenClaw进程
Docker Desktop刚升级后代理突然失效 新版Docker的容器网络隔离策略变更
配置了HTTP_PROXY但OpenClaw仍走直连 YAML配置与容器环境变量冲突
我一个一个说,并给出对应的解决方案。

二、踩坑一:环境变量没传到容器里(最常见)
2.1 错误做法
很多人在docker run命令里只写了这样:

docker run -d --name openclaw openclaw/openclaw:latest

然后在容器里手动export HTTP_PROXY——容器重启就没了。

2.2 正确做法
方案A:docker run时直接传环境变量

docker run -d \
-e HTTP_PROXY="http://隧道ID:密码@tps.zdaye.com:8080" \
-e HTTPS_PROXY="http://隧道ID:密码@tps.zdaye.com:8080" \
-e NO_PROXY="localhost,127.0.0.1" \
--name openclaw \
openclaw/openclaw:latest

方案B:docker-compose.yml配置(推荐)

services:
openclaw:
image: openclaw/openclaw:latest
container_name: openclaw
ports:

  - "18789:18789"
environment:
  - HTTP_PROXY=http://隧道ID:密码@tps.zdaye.com:8080
  - HTTPS_PROXY=http://隧道ID:密码@tps.zdaye.com:8080
  - NO_PROXY=localhost,127.0.0.1
volumes:
  - openclaw_data:/root/.openclaw
restart: unless-stopped

volumes:
openclaw_data:

验证环境变量是否生效:

docker exec openclaw env | grep -i proxy

应该能看到你配置的代理地址。

三、踩坑二:YAML配置和容器环境变量“打架”
3.1 问题根源
这是一个很容易被忽略的坑。回顾我们之前讲过的HTTP/HTTPS协议混淆问题——OpenClaw在处理YAML中的代理配置时,可能存在解析缺陷。

而当你在容器里同时做了两件事:

OpenClaw的代理加载逻辑可能产生冲突,导致两个都不生效。

3.2 解决方案
二选一,别混用:

推荐方案:只用环境变量,注释掉YAML中的proxy配置

config.yaml - 代理配置注释掉,让环境变量接管

proxy:

http: "http://..."

https: "http://..."

备选方案:只用YAML配置,不用环境变量

但这意味着你需要把YAML文件挂载进容器,并且要确保OpenClaw能正确解析(可能会遇到协议混淆问题)。

我的建议:在Docker环境中,优先使用环境变量方案。这是最底层、最可靠的代理配置方式,能绕开OpenClaw自己实现的代理解析逻辑。

四、踩坑三:Docker Desktop的容器网络隔离
4.1 问题现象
Docker Desktop 4.29.0及以上版本引入了“隔離容器”(Air-Gapped Containers)功能,可以对容器网络流量施加自定义代理规则。这个功能本意是好的——帮助管理员限制容器网络访问,保护敏感环境。

但如果配置不当,可能会意外拦截容器的代理流量。

4.2 检查方法
如果你用的是Docker Desktop,检查一下admin-settings.json中是否有containersProxy配置:

{
"containersProxy": {
"mode": "manual",
"http": "http://proxy.company.com:8080",
"https": "http://proxy.company.com:8080",
"transparentPorts": "*"
}
}

如果这里有配置,Docker会强制容器的网络流量走这个代理,覆盖你在容器内设置的环境变量。

4.3 解决方案
方案A:如果你不需要这个功能,删除或注释掉containersProxy配置

方案B:如果需要保留,确保这里的代理地址配置正确,且与OpenClaw的代理设置不冲突

PAC文件配置示例:

function FindProxyForURL(url, host) {
// 允许访问站大爷代理
if (dnsDomainIs(host, "tps.zdaye.com")) {
return "DIRECT";
}
// 其他流量走公司代理
return "PROXY corporate-proxy:8080";
}

五、踩坑四:容器网络模式选错了
5.1 常见错误:用--network host导致代理配置失效
有些用户为了让容器和宿主机共享网络,会这样写:

docker run --network host ...

这会导致:

5.2 正确做法:使用默认bridge网络 + 环境变量
services:
openclaw:
image: openclaw/openclaw:latest

# 不要用 network_mode: host
# 让Docker使用默认bridge网络
environment:
  - HTTP_PROXY=http://隧道ID:密码@tps.zdaye.com:8080
  - HTTPS_PROXY=http://隧道ID:密码@tps.zdaye.com:8080

5.3 特殊场景:容器需要访问宿主机的代理服务
如果你在宿主机上运行了一个代理服务(比如Clash、v2ray),想让容器通过它上网:

方案A:使用host.docker.internal(Docker Desktop专用)

environment:

方案B:使用宿主机IP(Linux Docker)

先获取宿主机IP

ip addr show docker0 | grep inet

输出示例:inet 172.17.0.1/16

environment:

六、踩坑五:容器内DNS解析问题
6.1 问题现象
代理配置看起来没问题,环境变量也传进去了,但OpenClaw报错:

Error: getaddrinfo ENOTFOUND tps.zdaye.com

6.2 原因分析
容器内的DNS配置可能无法正确解析站大爷的代理域名。这在某些云服务器或自定义Docker网络中很常见。

6.3 解决方案
方案A:使用IP地址代替域名

联系站大爷客服获取代理入口的IP地址,然后:

environment:

方案B:自定义容器DNS

services:
openclaw:
image: openclaw/openclaw:latest
dns:

  - 114.114.114.114
  - 8.8.8.8
environment:
  - HTTP_PROXY=http://隧道ID:密码@tps.zdaye.com:8080

方案C:在容器内测试DNS解析

docker exec openclaw nslookup tps.zdaye.com

如果不通,说明DNS确实有问题,用方案A或B。

七、完整配置模板(复制即用)
下面是一份经过实测、可直接使用的docker-compose.yml:

version: '3.8'

services:
openclaw:
image: openclaw/openclaw:latest
container_name: openclaw
restart: unless-stopped

ports:
  - "18789:18789"

environment:
  # 站大爷隧道代理配置
  - HTTP_PROXY=http://你的隧道ID:你的隧道密码@tps.zdaye.com:8080
  - HTTPS_PROXY=http://你的隧道ID:你的隧道密码@tps.zdaye.com:8080
  - NO_PROXY=localhost,127.0.0.1
  # 时区设置
  - TZ=Asia/Shanghai

# DNS配置(如果解析有问题,取消注释)
# dns:
#   - 114.114.114.114
#   - 8.8.8.8

volumes:
  - openclaw_data:/root/.openclaw
  - openclaw_cache:/root/.cache

# 健康检查(可选)
healthcheck:
  test: ["CMD", "curl", "-f", "http://localhost:18789"]
  interval: 30s
  timeout: 10s
  retries: 3

volumes:
openclaw_data:
openclaw_cache:

启动命令:

docker-compose up -d

验证代理是否生效:

进入容器

docker exec -it openclaw bash

测试代理连通性

curl -I https://httpbin.org/ip

或者用OpenClaw指令

openclaw gateway status

八、网络模式选择建议(总结)
网络模式 适用场景 代理兼容性 推荐度
bridge(默认) 大多数场景,容器需要独立网络 ⭐⭐⭐⭐⭐ 最佳 最推荐
host 容器需要极致网络性能,不关心隔离 ⭐⭐ 可能冲突 不推荐用于代理场景
none 完全离线容器 ❌ 不支持代理 不适用
自定义网络 多容器互联 ⭐⭐⭐⭐ 良好 高级用户
一句话总结:

九、快速排障清单
如果配置完还是不行,按顺序检查:

总结
Docker部署OpenClaw+站大爷隧道代理,核心就三句话:

把这三点记住,基本就不会踩坑了。如果还不行,按上面的排障清单一步步查,总能找到问题。

目录
相关文章
|
21天前
|
人工智能 数据可视化 安全
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
本文详解如何用阿里云Lighthouse一键部署OpenClaw,结合飞书CLI等工具,让AI真正“动手”——自动群发、生成科研日报、整理知识库。核心理念:未来软件应为AI而生,CLI即AI的“手脚”,实现高效、安全、可控的智能自动化。
34907 57
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
|
15天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
14288 44
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
|
3天前
|
缓存 人工智能 自然语言处理
我对比了8个Claude API中转站,踩了不少坑,总结给你
本文是个人开发者耗时1周实测的8大Claude中转平台横向评测,聚焦Claude Code真实体验:以加权均价(¥/M token)、内部汇率、缓存支持、模型真实性及稳定性为核心指标。
|
10天前
|
人工智能 JavaScript Ubuntu
低成本搭建AIP自动化写作系统:Hermes保姆级使用教程,长文和逐步实操贴图
我带着怀疑的态度,深度使用了几天,聚焦微信公众号AIP自动化写作场景,写出来的几篇文章,几乎没有什么修改,至少合乎我本人的意愿,而且排版风格,也越来越完善,同样是起码过得了我自己这一关。 这个其实OpenClaw早可以实现了,但是目前我觉得最大的区别是,Hermes会自主总结提炼,并更新你的写作技能。 相信就冲这一点,就值得一试。 这篇帖子主要就Hermes部署使用,作一个非常详细的介绍,几乎一步一贴图。 关于Hermes,无论你赞成哪种声音,我希望都是你自己动手行动过,发自内心的选择!
2826 28
|
1月前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
45827 160
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
6天前
|
弹性计算 人工智能 自然语言处理
阿里云Qwen3.6全新开源,三步完成专有版部署!
Qwen3.6是阿里云全新MoE架构大模型系列,稀疏激活显著降低推理成本,兼顾顶尖性能与高性价比;支持多规格、FP8量化、原生Agent及100+语言,开箱即用。
|
8天前
|
人工智能 弹性计算 安全
Hermes Agent是什么?怎么部署?超详细实操教程
Hermes Agent 是 Nous Research 于2026年2月开源的自进化AI智能体,支持跨会话持久记忆、自动提炼可复用技能、多平台接入与200+模型切换,真正实现“越用越懂你”。MIT协议,部署灵活,隐私可控。
2168 4