☰
docker-selenium 4.34.0 发布解读:Firefox 129.0.2 + GeckoDriver 0.36.0 镜像标签规范与打标签机制
2026/10/9 1:45:17 网站建设 项目流程
  • 测试
  • 后端
  • 云原生
  • 容器编排
  • 可观测性

【免费下载链接】docker-selenium

Provides a simple way to run Selenium Grid with Chrome, Firefox, and Edge using Container Platform, making it easier to perform browser automation at scale

项目地址:https://gitcode.com/GitHub_Trending/do/docker-selenium
点击查看免费下载

本篇技术指南围绕 docker-selenium 仓库中 Selenium Grid 4.34.0 版本 Firefox 129.0.2 镜像的发布记录,完整解析tag_and_push_browser_images.sh打标签脚本的参数约定、标签命名规范与底层执行流程,并结合 NodeFirefox/Dockerfile 说明 Firefox 与 GeckoDriver 是如何被封装进 Node 与 Standalone 镜像的。读者读完将能理解浏览器镜像的完整标签体系,并掌握如何通过精确镜像标签锁定特定浏览器、驱动与 Grid 版本组合。

发布记录:4.34.0 版本 Firefox 129 镜像的完整标签清单

本次发布记录(CHANGELOG/archived/4.34.0/firefox_129.md)是一次针对 Firefox 浏览器镜像的发布/打标签操作的原始日志,对应 Selenium Grid 4.34.0、Firefox 129.0.2 与 GeckoDriver 0.36.0 的组合。其执行命令与输出如下:

./tag_and_push_browser_images.sh 4.34.0 20250727 selenium false firefox true Tagging images for browser firefox, version 4.34.0, build date 20250727, namespace selenium Selenium Grid version -> 4.34.0-20250727 Firefox version -> 129.0.2 Short Firefox version -> 129.0 GeckoDriver version -> 0.36.0 Short GeckoDriver version -> 0.36 Tagged selenium/node-firefox:129.0.2-geckodriver-0.36.0-grid-4.34.0-20250727 Tagged selenium/standalone-firefox:129.0.2-geckodriver-0.36.0-grid-4.34.0-20250727 Tagged selenium/node-firefox:129.0.2-geckodriver-0.36.0-20250727 Tagged selenium/standalone-firefox:129.0.2-geckodriver-0.36.0-20250727 Tagged selenium/node-firefox:129.0.2-20250727 Tagged selenium/standalone-firefox:129.0.2-20250727 Tagged selenium/node-firefox:129.0-geckodriver-0.36-grid-4.34.0-20250727 Tagged selenium/standalone-firefox:129.0-geckodriver-0.36-grid-4.34.0-20250727 Tagged selenium/node-firefox:129.0-geckodriver-0.36-20250727 Tagged selenium/standalone-firefox:129.0-geckodriver-0.36-20250727 Tagged selenium/node-firefox:129.0-20250727 Tagged selenium/standalone-firefox:129.0-20250727

版本信息解读

维度值说明
Selenium Grid 版本4.34.0-20250727Grid 主版本 + 构建日期,构建日期为 2025-07-27
Firefox 完整版本129.0.2由firefox --version输出解析得到
Firefox 短版本129.0取完整版本号的前两段
GeckoDriver 完整版本0.36.0由geckodriver --version首行解析得到
GeckoDriver 短版本0.36取完整版本号的前两段

从发布日志看,这次操作一次性为node-firefox与standalone-firefox两类镜像各生成了 6 个标签,共 12 个标签。短版本(Short)标签是本次发布的关键设计:当浏览器存在小版本补丁升级(如 129.0.2 → 129.0.3)时,短版本标签129.0可以让使用者持续拉取同一主版本的最新镜像,同时避免标签频繁变动。

标签命名约定:三类标签的构成规则

参照 docs/docker-hub/node-firefox.md 中关于标签结构的说明,本次发布涉及的 12 个标签可分为三类:

1. 完整信息标签(全版本 + Grid 版本 + 构建日期)

selenium/node-firefox:129.0.2-geckodriver-0.36.0-grid-4.34.0-20250727

构成:<browserVersion>-geckodriver-<driverVersion>-grid-<gridVersion>-<buildDate>

这是信息量最完整的标签,精确锁定浏览器、驱动、Grid 与构建日期四个维度,适合要求严格可复现的测试环境。

2. 组合标签(浏览器版本/驱动版本 + 构建日期)

  • 129.0.2-geckodriver-0.36.0-20250727:浏览器完整版本 + 驱动完整版本 + 构建日期
  • 129.0.2-20250727:浏览器完整版本 + 构建日期
  • 129.0-geckodriver-0.36-20250727:短版本组合 + 构建日期
  • 129.0-20250727:浏览器短版本 + 构建日期

3. 短版本标签(发布期后追加的稳定标签)

selenium/node-firefox:129.0-geckodriver-0.36-grid-4.34.0-20250727

这一组将浏览器短版本、驱动短版本与 Grid 完整版本组合,方便在后续小版本补丁发布时保持标签稳定。

需要注意:本记录中没有生成129.0.2、129.0、129.0.2-geckodriver-0.36.0这类不带构建日期的纯版本标签。从 tag_and_push_browser_images.sh 源码看,这类标签仅在RELEASE_OLD_VERSION=false(即正式发布而非旧版本回溯)时才会追加生成。

打标签脚本机制:tag_and_push_browser_images.sh 的完整执行链路

发布日志中的命令指向仓库根目录下的 tag_and_push_browser_images.sh,该脚本是本次发布的执行主体。其参数定义位于脚本开头:

参数位置默认值本次调用值说明
VERSION$1无4.34.0Selenium Grid 版本号
BUILD_DATE$2无20250727构建日期(YYYYMMDD)
NAMESPACE$3无seleniumDocker Hub 镜像命名空间
PUSH_IMAGE$4falsefalse是否推送镜像到仓库
BROWSER$5无firefox目标浏览器
RELEASE_OLD_VERSION$6falsetrue是否为旧版本发布(回溯打标签)
PLATFORM$7linux/amd64linux/amd64目标平台

脚本首先拼出基础标签TAG_VERSION=4.34.0-20250727,随后进入firefox分支(tag_and_push_browser_images.sh),依次执行:

  1. 探测浏览器版本:docker run --rm selenium/node-firefox:4.34.0-20250727 firefox --version | awk '{print $3}',得到129.0.2;
  2. 探测驱动版本:docker run --rm selenium/node-firefox:4.34.0-20250727 geckodriver --version | awk 'NR==1{print $2}',得到0.36.0;
  3. 计算短版本:通过short_version()函数(tag_and_push_browser_images.sh)将完整版本号按.分割后取前两段,得到129.0与0.36;
  4. 组装标签数组FIREFOX_TAGS,并在RELEASE_OLD_VERSION=false时追加不带构建日期的标签;
  5. 遍历打标签:对node-firefox与standalone-firefox分别调用retag函数。

关键设计在于retag()函数(tag_and_push_browser_images.sh):它先从已构建的基础镜像(${NAMESPACE}/${image}:${TAG_VERSION})派生新标签,且支持两种路径——默认用docker tag本地打标签并在PUSH_IMAGE=true时推送;当PROMOTE_TAGS=true时改用docker buildx imagetools create在 registry 间直接复制多架构 manifest(避免docker pull只带回本机架构导致标签退化为单架构)。这解释了发布日志中每条Tagged输出的来源。

镜像底层实现:Firefox 129 与 GeckoDriver 0.36.0 如何进入容器

镜像的实际构建逻辑位于 NodeFirefox/Dockerfile,它以node-base为基础镜像(FROM ${NAMESPACE}/${BASE}:${VERSION}),以FIREFOX_VERSION=latest、GECKODRIVER_VERSION=latest为默认构建参数,并在构建时替换为具体版本。

Firefox 129 的安装策略

对于 Firefox 129.0.2 这一具体版本(主版本号 129 < 136),Dockerfile 走的是官方发布包下载路径(NodeFirefox/Dockerfile):

  1. 根据架构(amd64 → x86_64,aarch64 → aarch64)拼接下载地址https://download-installer.cdn.mozilla.net/pub/firefox/releases/129.0.2/linux-x86_64/en-US/firefox-129.0.2.deb;
  2. 若返回 404 则回退到.tar.bz2归档包;
  3. 交由 NodeFirefox/install-firefox-package.sh 完成安装——.deb包通过apt-get install -y --allow-downgrades -f安装,.tar.bz2/.tar.xz则解压到/opt/firefox-<version>并软链到/usr/bin/firefox;
  4. 最后执行apt-get upgrade修补依赖中的已知 CVE。

(对比:对于latest/beta-latest/esr-latest等动态版本,则走 NodeFirefox/install-firefox-apt.sh 配置的 Mozilla APT 源;从源码结构看,FIREFOX_MAJOR_VERSION >= 136后 amd64 架构也统一切换到 APT 路径。)

此外 NodeFirefox/get_lang_package.sh 会从 Mozilla FTP 为 129.0.2 下载全部语言包(langpack-*@firefox.mozilla.org.xpi)到distribution/extensions目录,保证多语言环境可用。

GeckoDriver 0.36.0 的安装策略

NodeFirefox/Dockerfile 中的 GeckoDriver 安装逻辑首先通过 GitHub releases 的latest重定向解析最新版本号,再按架构选择linux64或linux-aarch64压缩包下载,解压到/opt/geckodriver-0.36.0后软链为/usr/bin/geckodriver。本次发布正是通过该机制将 0.36.0 版本固化进镜像。

浏览器信息注册与进程守护

构建尾声,Dockerfile 会向/opt/selenium/browsers/firefox/写入name、version、binary_location三个文件(NodeFirefox/Dockerfile),供 Selenium Grid Node 注册能力时读取,其中 binary_location 内容为:

{"moz:firefoxOptions": {"binary": "${SE_BROWSER_BINARY_LOCATION:-/usr/bin/firefox}"}}

容器运行后,NodeFirefox/firefox-cleanup.sh 作为 supervisord 守护进程周期性清理残留的firefox-bin进程(间隔与进程年龄阈值由SE_BROWSER_LEFTOVERS_INTERVAL_SECS、SE_BROWSER_LEFTOVERS_PROCESSES_SECS控制),避免长时间运行的测试集群中堆积僵尸浏览器进程。

版本矩阵:4.34.0 中 Firefox 129 的定位

本次发布记录归档于 CHANGELOG/archived/4.34.0/,属于已归档的 Grid 版本。在 CHANGELOG/README.md 维护的版本矩阵中,Firefox 129 这一列覆盖了从 4.28.1 到 4.48.0 的多个 Grid 版本,且 Firefox 129 与 130、131、132、133、134、135 等版本在 4.34.0 发布时均有对应镜像(见archived/4.34.0/firefox_130.md、firefox_131.md等相邻发布记录),说明 4.34.0 是一次覆盖多浏览器版本矩阵的批量发布。

归档机制的意义在于:CHANGELOG 目录中保留最新 Grid 版本(如 4.48.0)的完整记录,而历史版本的记录移入archived/子目录,既保证了矩阵可追溯,又让最新版本列表保持聚焦。矩阵还明确提示:项目并未对每种 Grid 与浏览器版本的组合做完整测试,使用者需要依据自身测试需求评估选择。

如何选择并使用 Firefox 129 镜像

根据 docs/docker-hub/node-firefox.md 的说明,Node 模式下的典型启动方式为:

docker network create grid docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:4.34.0-20250727 docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub \ --shm-size="2g" \ selenium/node-firefox:129.0.2-geckodriver-0.36.0-grid-4.34.0-20250727

实践建议:

  • 运行含浏览器的容器务必添加--shm-size=2g,使用宿主机共享内存避免浏览器崩溃;
  • 需要精确复现测试环境时,使用129.0.2-geckodriver-0.36.0-grid-4.34.0-20250727这类全信息标签;
  • 希望在 129 主版本内跟随补丁更新时,可选用129.0短版本标签;
  • 验证标签对应的真实版本可用docker run --rm <image> firefox --version与docker run --rm <image> geckodriver --version检查,这与打标签脚本内部的探测命令完全一致。

总结

从 CHANGELOG/archived/4.34.0/firefox_129.md 这份发布日志出发,可以完整还原 docker-selenium 浏览器镜像的发布链路:构建(NodeFirefox/Dockerfile)→ 版本探测 → 短版本换算 → 多标签生成(tag_and_push_browser_images.sh)→ 归档入矩阵(CHANGELOG/README.md)。理解这一机制后,无论是运维发布流程,还是为测试套件挑选精确的镜像标签,都能做到有据可循、可复现、可追溯。

  • 测试
  • 后端
  • 云原生
  • 容器编排
  • 可观测性

【免费下载链接】docker-selenium

Provides a simple way to run Selenium Grid with Chrome, Firefox, and Edge using Container Platform, making it easier to perform browser automation at scale

项目地址:https://gitcode.com/GitHub_Trending/do/docker-selenium
点击查看免费下载

相关推荐

上一篇:gperftools 项目内嵌 GoogleTest 官方示例全解析:从基础断言到 Listener 高级定制
下一篇:Brutegram vs 其他Instagram破解工具:功能对比与优劣势分析

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询