docker-selenium 浏览器镜像 Tag 机制解析:以 Selenium Grid 4.34.0 + Firefox 114.0.2 发布记录为例
测试后端云原生容器编排可观测性【免费下载链接】docker-seleniumProvides 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 仓库归档的发布记录 CHANGELOG/archived/4.34.0/firefox_114.md深入剖析 Selenium Grid 4.34.0 构建日期 20250727 中 Firefox 镜像的 Tag 命名规范、生成流程与底层实现。通过阅读本文你将掌握node-firefox与standalone-firefox镜像从构建、版本探测到多格式打标、推送的完整链路理解长短版本号、GeckoDriver 版本、Grid 版本与构建日期在 Tag 中的组合规则并能够在自己的发布流程中复现这一套脚本化的 Tag 管理方法。一、这份发布记录记录了什么firefox_114.md是 4.34.0 版本浏览器镜像发布日志中针对 Firefox 的部分同目录下还有chrome_114.md、edge_114.md等同类记录完整保留了一次真实发布命令的执行输出。其核心内容如下./tag_and_push_browser_images.sh 4.34.0 20250727 selenium false firefox true命令执行后输出了本次发布的关键版本事实Selenium Grid 版本4.34.0-20250727Firefox 版本114.0.2短版本114.0GeckoDriver 版本0.36.0短版本0.36这四个版本号构成了后续所有镜像 Tag 的命名原料。该脚本位于仓库根目录 tag_and_push_browser_images.sh是浏览器镜像发布打标的统一入口。二、命令参数逐项解读发布命令共携带 7 个参数与脚本头部的参数解析一一对应tag_and_push_browser_images.sh位置本记录中的值参数名含义$14.34.0VERSIONSelenium Grid 版本号$220250727BUILD_DATE构建日期TAG_VERSION${VERSION}-${BUILD_DATE}拼接成4.34.0-20250727$3seleniumNAMESPACE镜像命名空间仓库名最终镜像名为selenium/node-firefox等$4falsePUSH_IMAGE是否执行docker pushfalse表示本次只打标不推送$5firefoxBROWSER浏览器类型脚本内通过case分支分发处理逻辑$6trueRELEASE_OLD_VERSION是否为旧版本补发 Tag。true时只打基础 6 种 Tagfalse时追加 4 种裸版本 Tag$7未传PLATFORM目标平台默认linux/amd64值得注意第 6 个参数true直接决定了本次输出只有 6 种 Tag 模式。查看脚本 firefox 分支可知FIREFOX_TAGS数组的基础成员固定为 6 个而当RELEASE_OLD_VERSIONfalse时会再追加 4 个成员见下文第四节这也是归档版本只打精简 Tag 的设计考量。三、本次发布生成的 12 个镜像 Tag 全清单以node-firefox与standalone-firefox两个镜像为准本次共生成 12 个 Tag可归纳为 6 组一一对应的模式序号Tagnode-firefox / standalone-firefox 各一份命名模式1114.0.2-geckodriver-0.36.0-grid-4.34.0-20250727完整版本 驱动完整版本 Grid 完整版本2114.0.2-geckodriver-0.36.0-20250727完整版本 驱动完整版本 构建日期3114.0.2-20250727浏览器完整版本 构建日期4114.0-geckodriver-0.36-grid-4.34.0-20250727短版本 驱动短版本 Grid 完整版本5114.0-geckodriver-0.36-20250727短版本 驱动短版本 构建日期6114.0-20250727浏览器短版本 构建日期这 6 组模式在脚本中的定义位置为 tag_and_push_browser_images.sh脚本注释明确区分了Browser version and browser driver version plus build date、Browser version and build date与短版本Short versions三类语义方便使用者按不同精确度拉取镜像。四、脚本实现原理从版本探测到批量打标4.1 版本探测容器内自报版本脚本并不假设版本号而是直接运行已构建的镜像让容器内的二进制自报版本firefox 分支tag_and_push_browser_images.shFIREFOX_VERSION$(docker run --rm ${NAMESPACE}/node-firefox:${TAG_VERSION} firefox --version | awk {print $3}) GECKODRIVER_VERSION$(docker run --rm ${NAMESPACE}/node-firefox:${TAG_VERSION} geckodriver --version | awk NR1{print $2})firefox --version输出形如Mozilla Firefox 114.0.2取第 3 列得到114.0.2geckodriver --version首行即为版本号取NR1的第 2 列得到0.36.0。这一设计保证了 Tag 与镜像内真实软件版本严格一致避免了硬编码漂移。4.2 短版本截取short_version()函数tag_and_push_browser_images.sh按.切分版本号并只取前两段function short_version() { local __long_version$1 local __version_split(${__long_version//./ }) echo ${__version_split[0]}.${__version_split[1]} }因此114.0.2→114.00.36.0→0.36与发布日志输出的 Short Firefox version - 114.0、Short GeckoDriver version - 0.36 完全吻合。4.3 打标与推送retag函数retag()tag_and_push_browser_images.sh承担核心动作本地docker tag后按PUSH_IMAGE决定是否docker push。脚本末尾对FIREFOX_TAGS数组逐项循环同时为node-firefox与standalone-firefox各打一份tag_and_push_browser_images.sh这就是 12 个 Tag6 模式 × 2 镜像的由来。4.4 常规发布会额外追加 4 组 Tag当RELEASE_OLD_VERSIONfalse即常规版本发布时脚本追加以下 4 个成员tag_and_push_browser_images.sh114.0.2-geckodriver-0.36.0浏览器完整版本 驱动完整版本114.0.2浏览器完整版本114.0-geckodriver-0.36短版本 驱动短版本114.0浏览器短版本从源码结构看这些裸版本 Tag 是给用户提供最简洁的拉取入口如selenium/node-firefox:114.0而归档旧版本时省略它们以降低维护成本。本记录因第 6 个参数为true故输出中未包含这 4 组。五、Firefox 镜像构建侧源码印证版本探测之所以可靠是因为镜像构建时已固化软件版本并写入元信息。见 NodeFirefox/Dockerfile5.1 Firefox 本体安装策略构建参数FIREFOX_VERSIONlatest、FIREFOX_DOWNLOAD_URL、FIREFOX_LANG_VERSION控制安装方式NodeFirefox/Dockerfile对latest/beta-latest/nightly-latest/devedition-latest/esr-latest及 Firefox 136 使用 Mozilla 官方 APT 仓库脚本 NodeFirefox/install-firefox-apt.sh 完成 keyring 安装与Pin-Priority: 1000偏好设置对具体版本号走 NodeFirefox/install-firefox-package.sh优先下载官方.deb包404 时回退.tar.bz2并对 beta/nightly/dev/esr 建立/usr/bin/firefox软链随后执行 NodeFirefox/get_lang_package.sh 下载对应版本的全部语言包到distribution/extensions。5.2 GeckoDriver 安装GECKODRIVER_VERSIONlatest时动态解析上游最新发布按架构选择linux64或linux-aarch64压缩包解压到/opt/geckodriver-$GK_VERSION并软链到/usr/bin/geckodriverNodeFirefox/Dockerfile。5.3 浏览器信息落盘构建末尾将版本信息写入/opt/selenium/browsers/firefox/供 Grid Node 注册时上报NodeFirefox/DockerfileRUN mkdir -p /opt/selenium/browsers/firefox \ echo firefox /opt/selenium/browsers/firefox/name \ firefox --version | awk {print $3} /opt/selenium/browsers/firefox/version \ echo {moz:firefoxOptions: {binary: ${SE_BROWSER_BINARY_LOCATION:-/usr/bin/firefox}}} /opt/selenium/browsers/firefox/binary_location同时设置SE_OTEL_SERVICE_NAMEselenium-node-firefox与SE_NODE_ENABLE_MANAGED_DOWNLOADStrueNodeFirefox/Dockerfile。5.4 构建入口与升级验证Makefile 提供firefox/firefox_only构建目标firefox: node_base firefox_only并支持FIREFOX_DOWNLOAD_URL覆盖Makefile 的tag_and_push_firefox_images目标正是本次发布命令的 Make 封装tag_and_push_firefox_images: ./tag_and_push_browser_images.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) $(PUSH_IMAGE) firefox $(RELEASE_OLD_VERSION)而firefox_upgrade_version目标Makefile在升级后依次验证selenium-server.jar、firefox --version、geckodriver --version三者的版本一致性。六、使用这些镜像运行 Firefox 自动化6.1 单容器快速体验docker run -d -p 4444:4444 -p 7900:7900 --shm-size2g selenium/standalone-firefox:4.48.0-20260905其中--shm-size2g是 Selenium 容器公认的推荐配置README 中 README.md 明确建议端口 4444 为 Grid 入口7900 为 noVNC 可视化调试入口。Firefox 依赖共享内存运行容量不足会导致浏览器崩溃。6.2 接入分布式 Grid在 Hub Node 模式下将node-firefox挂入selenium-hub并通过事件总线通信参见 docker-compose-v3.yml 的 firefox 服务定义firefox: image: selenium/node-firefox:4.48.0-20260905 shm_size: 2gb depends_on: - selenium-hub environment: - SE_EVENT_BUS_HOSTselenium-hub在多浏览器 Node 上可通过环境变量SE_NODE_ENABLE_BROWSER_FIREFOXfalse按需关闭 Firefox 能力README 多架构矩阵一节 README.md。6.3 设置浏览器语言与区域Firefox 的语言/区域需同时设置 profile 偏好并安装语言包 add-onREADME.mdprofile webdriver.FirefoxProfile() profile.set_preference(intl.accept_languages, vi-VN,vi) profile.set_preference(intl.locale.requested, vi-VN,vi) options FirefoxOptions() options.profile profile driver webdriver.Remote(optionsoptions, command_executorhttp://selenium-hub:4444/wd/hub) webdriver.Firefox.install_addon(driver, /local/path/to/vi.xpi)语言包可借助 NodeFirefox/get_lang_package.sh 批量获取README.mdFIREFOX_VERSION$(docker run --rm --entrypoint selenium/node-firefox:latest firefox --version | awk {print $3}) \ ./NodeFirefox/get_lang_package.sh ${FIREFOX_VERSION} /local/path/to/download七、僵尸进程清理与运维保障镜像内置了 Firefox 专用清理守护进程 NodeFirefox/firefox-cleanup.sh按周期找出运行超过阈值秒数的firefox-bin进程并kill -9配合 NodeFirefox/firefox-cleanup.conf 注册到 supervisordpriority20由SE_ENABLE_BROWSER_LEFTOVERS_CLEANUP控制启停。相关环境变量及默认值记录在 ENV_VARIABLES.md环境变量默认值说明SE_BROWSER_LEFTOVERS_PROCESSES_SECS7200超过该存活秒数的 Firefox 进程将被清理SE_BROWSER_LEFTOVERS_INTERVAL_SECS3600清理守护进程的检查间隔SE_BROWSER_LEFTOVERS_TEMPFILES_DAYS1/tmp残留临时文件清理天数Firefox 场景忽略结语通过一份归档的 Firefox 发布日志本文完整还原了 docker-selenium 浏览器镜像 Tag 生成的工程闭环构建期在 NodeFirefox/Dockerfile 内固化浏览器与驱动版本发布期由 tag_and_push_browser_images.sh 以容器自报版本为准生成 6 至 10 组语义化 Tag再经 Make 目标 Makefile 统一编排。理解了这套机制无论是追溯历史版本如114.0-geckodriver-0.36-grid-4.34.0-20250727、按需拉取精简 Tag如114.0还是自定义镜像版本管理流程都能做到有据可依、可复现、可验证。赞分享测试后端云原生容器编排可观测性【免费下载链接】docker-seleniumProvides 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 浏览器镜像 Tag 命名与发布机制全解以 Chrome 111 Selenium Grid 4.34.0 发布记录为例docker selenium 浏览器镜像 Tag 命名与发布机制全解以 Chrome 111 Selenium Grid 4.34.0 发布记录为例 d测试后端云原生容器编排可观测性docker-selenium 浏览器镜像 Tag 命名全解以 Firefox 127.0.2 Selenium Grid 4.29.0 发布记录为例docker selenium 浏览器镜像 Tag 命名全解以 Firefox 127.0.2 Selenium Grid 4.29.0 发布记录为例 导测试后端云原生容器编排可观测性docker-selenium 浏览器镜像标签体系解析以 Selenium Grid 4.34.0 Chrome 95 发布记录为例docker selenium 浏览器镜像标签体系解析以 Selenium Grid 4.34.0 Chrome 95 发布记录为例 本篇技术指南围绕 d测试后端云原生容器编排可观测性上一篇SonarQube界面定制实战打造企业级代码质量管理平台下一篇POCO C库构建网络应用的完整开发框架指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Liger-Kernel 开发验证指南:Validator Agent 六步验证流程与基准测试实操

Liger-Kernel 开发验证指南:Validator Agent 六步验证流程与基准测试实操

大模型模型优化深度学习 【免费下载链接】Liger-Kernel Efficient Triton Kernels for LLM Training 项目地址: https://gitcode.com/gh_mirrors/li/Liger-Kernel 点击查看 免费下载 本文是 Liger-Kernel 仓库内 liger-kernel-dev Skill 中 Validator Agent 工作流…

2026/10/9 1:59:19 阅读更多 →
从一机一密到ACL:EMQX+Spring Boot构建物联网设备接入双重安全防线

从一机一密到ACL:EMQX+Spring Boot构建物联网设备接入双重安全防线

说实话,第一次亲眼看到别人用我平台上另一台设备的连接参数,伪造了一整条温度变化曲线打到我后台时,我后背是发凉的。数据告警、联动逻辑、历史存储全部被误导,最可怕的是平台侧看起来一切正常:设备在线、数据频率稳定…

2026/10/9 1:59:19 阅读更多 →
2026 Agent 开发实战手册:从架构、记忆到并发与安全的工程化落地

2026 Agent 开发实战手册:从架构、记忆到并发与安全的工程化落地

1. 这份报告到底在聊什么2026 年的 Agent 开发者调研报告,加上 Alibaba Cloud 的 AI Agent Handbook,这两个东西放在一起看,其实指向的是同一件事:Agent 开发这件事,已经从“能不能跑起来”进入到了“怎么跑得稳、跑得…

2026/10/9 1:58:18 阅读更多 →

最新新闻

SHA1算法的各种密码分析方法全面盘点

SHA1算法的各种密码分析方法全面盘点

SHA1算法的各种密码分析方法全面盘点SHA-1(安全散列算法1)是由NSA设计、NIST于1995年发布的160位密码杂凑函数。基于Merkle-Damgrd迭代结构,将任意长度消息分为512位块,通过压缩函数依次处理。理论上,SHA-1应具备160位…

2026/10/9 2:34:38 阅读更多 →
Python 数据挖掘实战项目:电商用户行为分析(聚类分群、流失预测与关联规则)

Python 数据挖掘实战项目:电商用户行为分析(聚类分群、流失预测与关联规则)

Python 数据挖掘实战项目:电商用户行为分析(聚类分群、流失预测与关联规则) 数据挖掘课程设计与竞赛入门的共同痛点是「没有真实数据可练」。本工程内置一个带真实行为规律的订单数据生成器(5000 用户 / 约 3 万条订单&#xff0…

2026/10/9 2:34:38 阅读更多 →
Java 异常处理实战案例集:50 个高频异常的现象、根因、修复与预防

Java 异常处理实战案例集:50 个高频异常的现象、根因、修复与预防

Java 异常处理实战案例集:50 个高频异常的现象、根因、修复与预防 异常处理是 Java 面试与答辩的必考题,但多数教程只讲语法不讲「为什么会炸」。这套案例集把 50 个高频异常按 8 大家族归类,每个案例固定四段式:现象&#xff08…

2026/10/9 2:34:38 阅读更多 →
SaaS「现金陷阱」全解析:EnterpriseCRM 案例教你如何识破 5:1 LTV:CAC 的假象(Product-Manager-Skills 实战拆解)

SaaS「现金陷阱」全解析:EnterpriseCRM 案例教你如何识破 5:1 LTV:CAC 的假象(Product-Manager-Skills 实战拆解)

AI 技能AI 插件 【免费下载链接】Product-Manager-Skills Product Management skills framework built on battle-tested methods for Claude Code, Cowork, Codex, and AI agents. 项目地址: https://gitcode.com/gh_mirrors/pr/Product-Manager-Skills 点击查看 免…

2026/10/9 2:34:38 阅读更多 →
互联网消费金融资金合作模式全解析:助贷、联合贷、ABS与信托通道选型指南

互联网消费金融资金合作模式全解析:助贷、联合贷、ABS与信托通道选型指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 2:34:38 阅读更多 →
Loop 径向菜单窗口管理完整指南:按住一个键,窗口就去哪

Loop 径向菜单窗口管理完整指南:按住一个键,窗口就去哪

Loop 径向菜单窗口管理完整指南:按住一个键,窗口就去哪 【免费下载链接】Loop Window management made elegant. 项目地址: https://gitcode.com/GitHub_Trending/lo/Loop 手要拖窗口之前 光标悬在窗口标题栏上,手指刚要往下拽&#…

2026/10/9 2:33:38 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 13:34:55 阅读更多 →