You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从selenium/node-chrome-debug容器调用本地API报连接被拒如何解决

问题根因

Docker容器默认使用独立的网络命名空间,你在Selenium Chrome节点容器内访问的localhost指向的是容器自身的环回地址,和宿主机、其他容器的网络隔离,和Selenium Grid Hub无关,所以会出现连接拒绝报错。

解决方案

分两种场景对应处理:

场景1:REST API部署在宿主机的5000端口

可任选以下一种方案:

  • 方案1:使用宿主机映射域名访问
    在你的docker-compose.yml的chrome服务配置中新增extra_hosts字段,配置如下:
    version: "3"
    services:
            selenium-hub:
                    image: selenium/hub
                    ports:
                            - "4444:4444"
                    environment:
                            GRID_MAX_SESSION: 2
                            GRID_BROWSER_TIMEOUT: 300
                            GRID_TIMEOUT: 300 # 注意原配置这里有笔误,括号要改成下划线
            chrome:
                    image: selenium/node-chrome-debug
                    extra_hosts:
                      - "host.docker.internal:host-gateway"
                    depends_on:
                            - selenium-hub
                    environment:
                            HUB_PORT_4444_TCP_ADDR: selenium-hub
                            HUB_PORT_4444_TCP_PORT: 4444
                            NODE_MAX_SESSION: 2
                            NODE_MAX_INSTANCES: 2
    
    修改配置后重启容器,将RestSharp的请求地址改为http://host.docker.internal:5000即可访问宿主机的REST API。
  • 方案2:使用host网络模式(仅支持Linux宿主机)
    在chrome服务配置中新增network_mode: "host",容器会和宿主机共享网络栈,直接访问http://localhost:5000即可,注意该模式下Selenium Hub的访问地址需要改为localhost:4444,不能再使用服务名selenium-hub解析。

场景2:REST API直接部署在selenium/node-chrome-debug容器内部

  • 首先修改REST API的启动配置,将监听地址从127.0.0.1:5000改为0.0.0.0:5000,避免只绑定环回地址导致容器内部也无法访问。
  • 如果需要从宿主机或其他容器访问该API,可在chrome服务下新增端口映射:
    ports:
      - "5000:5000"
    

额外提醒

你原有的docker-compose配置中存在笔误:GRID)TIMEOUT的右括号需要改为下划线,即GRID_TIMEOUT,否则Selenium Hub启动会出现配置加载错误。


内容的提问来源于stack exchange,提问作者JMFS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:27:05