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

如何通过Docker Compose在两台机器搭建Selenium Grid并实现跨机节点接入

解决跨机器连接Selenium Grid Hub与Node的问题

首先,你本地用Docker Compose轻松扩容节点没问题,是因为所有容器都在同一台机器的Docker内网里,但跨机器部署的核心是让第二台机器的Node容器能精准访问到Hub所在机器的IP和端口,下面是经过验证的实操步骤:

第一步:确认Hub所在机器的网络可达性

  • 先找到Hub机器的局域网/公网IP(比如192.168.1.100),同时确保该机器的4444端口没有被防火墙、安全组拦截
  • 在Hub机器上执行curl http://localhost:4444/wd/hub/status,能返回正常的JSON状态信息,说明Hub运行正常

第二步:在第二台机器启动Node容器

不需要复杂的网络配置,直接通过环境变量指定Hub地址即可,两种方式任选:

方式1:直接用Docker命令启动

docker run -d \
  -e HUB_HOST=192.168.1.100 \  # 替换成你的Hub机器实际IP
  -e HUB_PORT=4444 \
  selenium/node-chrome

方式2:用Docker Compose管理Node

创建一个单独的docker-compose.node.yml文件:

version: '3'
services:
  chrome-node:
    image: selenium/node-chrome
    environment:
      - HUB_HOST=192.168.1.100  # 填写Hub机器IP
      - HUB_PORT=4444
    restart: always

执行命令扩容该机器上的节点:

docker-compose -f docker-compose.node.yml up -d --scale chrome-node=3

第三步:验证连接状态

在Hub机器上访问http://localhost:4444/grid/console,就能看到第二台机器的Node已经成功注册到Hub中了

为什么之前的方案没生效?

  • links:这是Docker Compose同一机器内的容器关联方式,跨机器完全不生效,因为它依赖本地Docker网络的域名解析
  • 自定义networks:如果要跨机器用自定义网络,需要启用Docker Swarm的overlay网络,这会增加复杂度,对你的负载均衡需求来说没必要
  • environment配置错误:你之前可能把HUB_HOST设成了localhost或seleniumhub(本地服务名),这些在第二台机器上无法解析到Hub,必须用Hub机器的实际IP

如果遇到注册失败,先排查:

  • 第二台机器能否ping通Hub的IP
  • 第二台机器能否通过telnet 192.168.1.100 4444连通端口
  • 查看Node容器日志:docker logs <容器ID>,定位连接超时或错误信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:25:18