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

Docker部署Selenium脚本时selenium-hub域名解析失败如何解决

问题原因

核心原因是你配置的app服务启用了network_mode: "host":

  • Docker Compose默认会为当前项目的所有服务创建独立的内部桥接网络,只有在该网络内的服务才能通过服务名(如selenium-hub)完成DNS解析互通
  • 给app设置主机网络模式后,它会直接使用宿主机的网络栈,脱离了Compose创建的默认内部网络,因此无法解析selenium-hub这个内部服务域名,触发名称解析失败报错。

另外你的配置还存在两个非直接导致本次报错,但需要修正的问题:

  • volumes配置存在语法错误:- . :/home/saimon/中本地路径和冒号之间多余了空格,会导致挂载失败
  • depends_on仅控制服务启动顺序,不会等待selenium-hub完全初始化就绪就会启动app,如果启动时机过快也可能偶发连接失败。
解决方案

根据你的需求选择对应方案即可:

方案1(推荐):移除主机网络配置

直接删除app服务下的network_mode: "host"配置,让app回归Compose默认内部网络,即可正常解析selenium-hub服务名。
修正后的完整docker-compose.yml参考:

version: "3"
services:
  chrome:
    image: selenium/node-chrome:4.0.0-rc-1-prerelease-20210823
    shm_size: 2gb
    depends_on:
      - selenium-hub
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
    ports:
      - "6900:5900"

  selenium-hub:
    image: selenium/hub:4.0.0-rc-1-prerelease-20210823
    container_name: selenium-hub
    ports:
      - "4444:4444"
  app:
    build:
      context: . 
    volumes:
      - .:/home/saimon/
    depends_on:
      - selenium-hub
      - chrome
    command: python3 app.py
    environment:
      - SELENIUM_REMOTE_HOST=selenium-hub

修改完成后重新执行docker-compose up即可正常运行。

方案2:保留主机网络修改连接地址

如果你确实需要app使用宿主机网络,则不能用内部服务名连接selenium-hub,需要修改Selenium驱动初始化的连接地址为宿主机地址:

driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub',
                                           desired_capabilities=DesiredCapabilities.CHROME, options=self.chrome_options)

因为selenium-hub已经将4444端口映射到宿主机,直接通过本地回环地址即可访问。

可选优化

为了避免selenium-hub未就绪就启动app导致偶发连接失败,可以在启动命令中增加等待逻辑,示例:

command: sh -c "sleep 15 && python3 app.py"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:48:04