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

简介: OpenClaw Docker部署中代理失效?常见于环境变量未传入、YAML与环境变量冲突、网络模式错误(如误用host)、Docker Desktop代理拦截及DNS解析失败。推荐:仅用`HTTP_PROXY/HTTPS_PROXY`环境变量 + `bridge`网络 + 注释YAML代理配置,5分钟排障到位。(239字)

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

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

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

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

一、问题现象:容器内代理“失灵”的典型表现

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

二、踩坑一:环境变量没传到容器里(最常见)

很多人在docker run命令里只写这样:docker run -d --name openclaw openclaw/openclaw:latest,然后在容器里手动export HTTP_PROXY——容器重启就没了

正确做法:在docker run时直接传环境变量,或在docker-compose.yml中配置。

方案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

验证环境变量是否生效docker exec openclaw env | grep -i proxy

三、踩坑二:YAML配置和容器环境变量“打架”

问题根源:当你在容器里同时做了两件事——在config.yaml里配置了proxy字段,又通过-e传入了HTTP_PROXY环境变量——OpenClaw的代理加载逻辑可能产生冲突,导致两个都不生效

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

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

# config.yaml - 代理配置注释掉,让环境变量接管
# proxy:
#   http: "http://..."
#   https: "http://..."

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

四、踩坑三:Docker Desktop的容器网络隔离

Docker Desktop 4.29.0及以上版本引入了“隔离容器”功能,可以对容器网络流量施加自定义代理规则。如果配置不当,可能会意外拦截容器的代理流量

检查方法:查看admin-settings.json中是否有containersProxy配置:

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

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

解决方案

  • 方案A:如果不需要这个功能,删除或注释掉containersProxy配置
  • 方案B:如果需要保留,确保这里的代理地址配置正确,且与OpenClaw的代理设置不冲突

PAC文件配置示例(允许访问站大爷代理):

function FindProxyForURL(url, host) {
 if (dnsDomainIs(host, "tps.zdaye.com")) {
   return "DIRECT";
 }
 return "PROXY corporate-proxy:8080";
}

五、踩坑四:容器网络模式选错了

常见错误:用--network host导致代理配置失效

有些用户为了让容器和宿主机共享网络,会这样写:docker run --network host ...。这会导致容器使用宿主机的网络栈,代理行为变得不可预测。

正确做法:使用默认bridge网络 + 环境变量

services:
 openclaw:
   image: openclaw/openclaw:latest
   # 不要用 network_mode: host
   environment:
     - HTTP_PROXY=http://隧道ID:密码@tps.zdaye.com:8080
     - HTTPS_PROXY=http://隧道ID:密码@tps.zdaye.com:8080

特殊场景:如果容器需要访问宿主机的代理服务:

  • Docker Desktop:使用host.docker.internal
  • Linux Docker:使用宿主机IP(如172.17.0.1

六、踩坑五:容器内DNS解析问题

代理配置看起来没问题,环境变量也传进去了,但OpenClaw报错:Error: getaddrinfo ENOTFOUND tps.zdaye.com——这是容器内DNS无法解析代理域名。

解决方案

方案A:使用IP地址代替域名(联系站大爷客服获取代理入口IP)

方案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

七、完整配置模板(复制即用)

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

八、网络模式选择建议(总结)

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

九、快速排障清单

如果配置完还是不行,按顺序检查:

  1. [ ] 环境变量是否传入了容器?→ docker exec openclaw env | grep -i proxy
  2. [ ] 代理地址格式是否正确?→ 不要漏掉http://前缀和认证信息
  3. [ ] 容器内能否curl通代理?→ docker exec openclaw curl -x http://... https://httpbin.org/ip
  4. [ ] DNS能否解析代理域名?→ docker exec openclaw nslookup tps.zdaye.com
  5. [ ] Docker Desktop是否有containersProxy配置拦截?→ 检查admin-settings.json
  6. [ ] 是否混用了YAML配置和环境变量?→ 注释掉YAML中的proxy
  7. [ ] 网络模式是不是host?→ 改回bridge

总结

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

  1. 环境变量传代理,别用YAML配置
  2. 网络模式用bridge,别用host
  3. 二选一别混用,环境变量最稳

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

目录
相关文章
|
4天前
|
人工智能 JSON 自然语言处理
让教学更智慧:用阿里云百炼工作流,自动生成中小学教材内容#小有可为#有温度的AI
通过可视化工作流编排,将大模型推理能力转化为标准化的教学内容生成引擎。教师只需输入教材标题和适用学段,即可自动获得结构完整、符合课程标准的章节内容,大幅降低备课门槛,助力教育资源均衡化。
447 122
|
6天前
|
人工智能 定位技术 SEO
我学 GEO 第 15 天:终于知道AI GEO该如何做?
我是暴走的莉莉酱,边旅行边研究AI GEO的数字游民。专注普通人如何提升“AI可见度”——让AI在回答用户问题时准确识别、理解并推荐你。不讲玄学,只做可测、可调、可持续的GEO实践。
430 125
|
8天前
|
机器学习/深度学习 人工智能 调度
🐴 HappyHorse 1.1 现已上线阿里云百炼!快来查收模型使用指南,现在调用享 6 折~
HappyHorse 1.1 是新一代视频生成大模型,全面升级动态表现力、角色一致性、指令遵循、视觉质感与音画协同能力。支持I2V/T2V/R2V三类生成,适配短剧、电商广告、品牌营销等场景,提供高质、流畅、可控的AI视频生产力。
719 5
🐴 HappyHorse 1.1 现已上线阿里云百炼!快来查收模型使用指南,现在调用享 6 折~
|
6天前
|
缓存 人工智能 运维
阿里云618百炼大模型Qwen3.7-Max功能、免费试用、订阅计费、配置接入详解
Qwen3.7-MAX是阿里云百炼平台推出的通义千问3.7系列旗舰大语言模型,专为智能体时代复杂任务打造,依托阿里云全域算力与自研技术,在逻辑推理、长文本处理、代码工程、长周期自主执行等领域达到行业顶尖水平。2026年618期间,该模型推出多重免费试用权益、按量计费5折、订阅套餐优惠等专属福利,覆盖个人开发者、团队与企业全场景需求,以下从核心功能、免费试用、订阅计费、配置接入四方面展开详细解析。
430 123
|
4天前
|
人工智能 自然语言处理 API
阿里云Token Plan团队版解析:功能、三档套餐与省钱订阅指南
阿里云百炼平台推出的Token Plan团队版,是面向企业与团队的AI大模型订阅服务,以Credits为统一计量单位,整合文本与图像生成模型,提供团队管理、数据安全、多工具兼容等核心能力,解决团队零散订阅AI服务的管理混乱、成本失控、数据安全等痛点。本文将从核心定位、套餐详情、计费规则、团队管理、工具兼容、便宜订阅技巧等方面,全面解析Token Plan团队版,帮助企业与团队高效、低成本地使用AI服务。
317 108
|
14天前
|
Linux 程序员 数据格式
【2026最新】Notepad++下载、安装和使用一篇搞定(附中文版安装包)
Notepad++ 是一款免费开源、轻量高效的 Windows 文本编辑器,支持 C/Python/HTML 等 80+ 语言语法高亮、代码折叠、正则替换、编码转换及插件扩展,专为程序员与文本处理用户打造,完美替代系统记事本。(239字)
|
5天前
|
存储 人工智能 数据可视化
别再手动复制 Skill 了:多 Agent 时代的 Skill 管理方案
多 Agent 场景下 Skill 的统一管理与同步。
274 125
|
8天前
|
存储 人工智能 监控
QoderWork完全指南:从入门到精通,把“AI实习生”变成你的全能工作搭档
阿里云2026年推出的桌面端AI工作助手QoderWork,不止聊天,更可动手干活:本地运行、安全可控,支持文件整理、数据分析、PPT生成、网页开发等;内置专家套件、多Agent协作与自定义Skills,让AI真正成为你身边的“AI实习生”。