深入解析 docker-selenium 浏览器镜像标签体系:以 Chrome 131 发布记录为例详解 tag_and_push_browser_images.sh
测试后端云原生容器编排可观测性【免费下载链接】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点击查看免费下载导读本文以仓库归档发布记录 CHANGELOG/archived/4.35.0/chrome_131.md 为切入点完整剖析 docker-selenium 项目中浏览器镜像node-chrome、standalone-chrome发布时标签Tag的生成规则、版本探测与推送到镜像仓库的完整流程。读完后你将能读懂任何一条形如selenium/node-chrome:131.0.6778.264-chromedriver-131.0.6778.264-grid-4.35.0-20250909的标签含义理解短版本标签与网格版本标签的设计意图并掌握通过 tag_and_push_browser_images.sh 复现或定制发布流程的方法。一、发布记录里的完整命令Chrome 131 与 4.35.0 网格归档的发布记录chrome_131.md保存了 2025 年 9 月 9 日构建日期20250909针对 Selenium Grid4.35.0、浏览器 Chrome 131 执行标签打推的完整命令行输出命令原文如下./tag_and_push_browser_images.sh 4.35.0 20250909 selenium false chrome true Tagging images for browser chrome, version 4.35.0, build date 20250909, namespace selenium Selenium Grid version - 4.35.0-20250909 Chrome version - 131.0.6778.264 Short Chrome version - 131.0 ChromeDriver version - 131.0.6778.264 Short ChromeDriver version - 131.0 Tagged selenium/node-chrome:131.0.6778.264-chromedriver-131.0.6778.264-grid-4.35.0-20250909 Tagged selenium/standalone-chrome:131.0.6778.264-chromedriver-131.0.6778.264-grid-4.35.0-20250909 Tagged selenium/node-chrome:131.0.6778.264-chromedriver-131.0.6778.264-20250909 Tagged selenium/standalone-chrome:131.0.6778.264-chromedriver-131.0.6778.264-20250909 Tagged selenium/node-chrome:131.0.6778.264-20250909 Tagged selenium/standalone-chrome:131.0.6778.264-20250909 Tagged selenium/node-chrome:131.0-chromedriver-131.0-grid-4.35.0-20250909 Tagged selenium/standalone-chrome:131.0-chromedriver-131.0-grid-4.35.0-20250909 Tagged selenium/node-chrome:131.0-chromedriver-131.0-20250909 Tagged selenium/standalone-chrome:131.0-chromedriver-131.0-20250909 Tagged selenium/node-chrome:131.0-20250909 Tagged selenium/standalone-chrome:131.0-20250909这份输出同时揭示了四个关键信息命令的七个位置参数、浏览器与驱动版本一致的对齐策略、六类标签的命名规则以及一次发布、两镜像共用的分发方式。下文逐一展开。二、命令参数逐项解读七个位置参数决定一次发布对照 tag_and_push_browser_images.sh 的入口定义该脚本接收最多七个位置参数参数位变量本次取值含义$1VERSION4.35.0Selenium Grid 版本号与构建日期拼接为网格版本标签$2BUILD_DATE20250909构建日期YYYYMMDD用于区分同版本不同批次$3NAMESPACEselenium镜像命名空间实际生效值见下文实现说明$4PUSH_IMAGEfalse是否在打标签后执行docker push$5BROWSERchrome浏览器类型可取值chrome/chromium/edge/firefox/chrome-for-testing$6RELEASE_OLD_VERSIONtrue是否为归档旧版本发布决定是否追加不带构建日期的浮动标签$7PLATFORM缺省linux/amd64版本探测时docker run使用的平台参数脚本在 第 15 行 计算TAG_VERSION${VERSION}-${BUILD_DATE}即4.35.0-20250909并输出Tagging images for browser chrome, version 4.35.0, build date 20250909。值得注意的一个实现细节脚本虽然接收第 3 个参数NAMESPACE但随后的NAMESPACE${NAME:-selenium}会以环境变量NAME缺省selenium重新赋值命名空间。也就是说当通过 Makefile 调用NAME默认为selenium见 Makefile或直接在未设置NAME的 shell 中调用时命名空间始终是selenium与文档输出一致。三、标签体系三组命名模式 × 长短版本 × 双镜像3.1 六类标签的生成规则以chrome分支为例见 tag_and_push_browser_images.sh脚本先探测出三个版本号再据此组装标签数组CHROME_TAGS完整版本号131.0.6778.264Chrome 与 ChromeDriver 相同短版本号131.0由short_version()函数取前两段点分号见 L53-L57网格版本标签4.35.0-20250909当RELEASE_OLD_VERSIONtrue本次归档发布场景时生成的 6 个标签分为两组各 3 个组标签本次实际值打在两镜像上完整版本 × 网格{ver}-chromedriver-{drv}-grid-{tag}131.0.6778.264-chromedriver-131.0.6778.264-grid-4.35.0-20250909完整版本 × 构建日期{ver}-chromedriver-{drv}-{build}131.0.6778.264-chromedriver-131.0.6778.264-20250909完整版本 × 构建日期纯版本{ver}-{build}131.0.6778.264-20250909短版本 × 网格{short}-chromedriver-{short}-grid-{tag}131.0-chromedriver-131.0-grid-4.35.0-20250909短版本 × 构建日期驱动{short}-chromedriver-{short}-{build}131.0-chromedriver-131.0-20250909短版本 × 构建日期纯版本{short}-{build}131.0-20250909随后脚本对node-chrome与standalone-chrome两个镜像逐一执行retag因此最终输出6 个标签 × 2 个镜像 12 行 Tagged记录。standalone-chrome在构建时以node-chrome为基础镜像见 Makefile 中 standalone-chrome 构建链二者共享同一浏览器版本所以标签一一对应。3.2 各命名段的设计意图grid-{tag}段精确锁定浏览器 驱动 Selenium Grid 主程序版本三者组合适合需要完全可复现的 CI 场景{build}日期段标识同一浏览器版本在不同构建批次下的镜像便于追踪镜像内容变更131.0短版本段保留主次版本两个段便于人类记忆与快速指定大版本线如升级 Chrome 132 后测试脚本是否仍兼容不带任何日期的纯版本标签如131.0.6778.264仅在RELEASE_OLD_VERSIONfalse新版本发布时追加共 4 个{ver}-chromedriver-{drv}、{ver}、{short}-chromedriver-{short}、{short}。归档旧版本不打这些标签是为了避免旧版本覆盖/混淆当前最新版本的浮动标签对应脚本 L88-L99 的注释Browser version and browser driver version。四、源码级拆解版本探测、retag 与推送机制4.1 版本号如何探测—— 直接运行容器内二进制脚本不依赖外部版本清单而是通过docker run临时拉起已构建好的node-chrome:4.35.0-20250909镜像执行浏览器与驱动的--version命令来获取版本CHROME_VERSION$(docker run --platform ${PLATFORM} --rm ${NAMESPACE}/node-chrome:${TAG_VERSION} google-chrome --version | awk {print $3}) CHROMEDRIVER_VERSION$(docker run --platform ${PLATFORM} --rm ${NAMESPACE}/node-chrome:${TAG_VERSION} chromedriver --version | awk {print $2})这是以镜像内实际二进制为准的发布策略标签上的版本号一定与容器内google-chrome --version的输出一致杜绝了版本清单与镜像内容脱节的问题。--platform ${PLATFORM}支持对非本机架构如 arm64的镜像执行探测--rm保证探测容器即用即弃。short_version()则通过把版本号按.切分成数组后取前两段得到131.0。4.2 retag从源标签衍生出全部发布标签核心函数retag见 tag_and_push_browser_images.sh以{NAMESPACE}/{image}:{TAG_VERSION}即selenium/node-chrome:4.35.0-20250909为源镜像为每个目标标签执行默认路径docker tag本地打标签当PUSH_IMAGEtrue时追加docker push发布升级路径当环境变量PROMOTE_TAGStrue时改用docker buildx imagetools create直接在 registry 之间复制多架构 manifest 索引从而避免本地docker pull只能带回单架构镜像、导致浏览器标签退化为单架构的问题同时若设置了PROMOTE_GHCR_NAMESPACE还会在同一调用中把标签同步镜像到 GHCR脚本头部注释详细说明了这一设计背景。4.3 其他浏览器分支的对称设计同样的流程在chromium、edge、firefox分支中对称存在见 tag_and_push_browser_images.sh仅探测命令与标签段名称不同如edgedriver、geckodriver。chrome-for-testing分支L238-L280则针对 Chrome for Testing 版本输出格式不同google-chrome --version取$5做了适配。这也解释了为什么 Makefile 中tag_and_push_browser_images目标会聚合tag_and_push_chrome_images、tag_and_push_chrome-for-testing_images、tag_and_push_chromium_images、tag_and_push_firefox_images、tag_and_push_edge_images五个子目标。五、版本对齐的底层保障Chrome 与 ChromeDriver 1:1 匹配发布记录里 Chrome 与 ChromeDriver 均为131.0.6778.264这并非巧合而是镜像构建时按浏览器版本驱动化安装策略的结果。在 NodeChrome/Dockerfile 中CHROME_VERSION构建参数默认google-chrome-stable由 install-chrome.sh 通过 apt 仓库安装 stable/beta/unstable 通道并支持google-chrome-stable121.0.6167.120-1这类精确版本格式CFT_VERSION默认STABLE配合INSTALL_CFTtrue走 install-chrome-for-testing.sh可从LATEST_RELEASE_{CHANNEL}接口解析渠道对应版本号后下载安装 Chrome for TestingChromeDriver 安装脚本 install-chromedriver.sh 在未显式指定CHROME_DRIVER_VERSION时会先从google-chrome --version解析出 Chrome 主版本号再通过 resolve-chromedriver-source.sh 决定驱动来源Chrome 131 这类现代版本走 Chrome for Testing 的 ChromeDriver 分发通道从而保证驱动与浏览器主版本严格对齐——这正是标签中131.0.6778.264-chromedriver-131.0.6778.264能够成立的构建期前提。六、发布记录的归档语义与跨版本对照本次记录位于CHANGELOG/archived/4.35.0/归档目录RELEASE_OLD_VERSIONtrue正是归档发布的标志只打带构建日期的 6 类标签不追加不带日期的浮动标签避免与更新版本如 4.48.0的镜像产生歧义。作为对照当前版本发布记录 展示了同一 Chrome 131 版本线在新发布流程中以chrome-for-testing浏览器类型、selenium/node-chrome-for-testing/selenium/standalone-chrome-for-testing镜像呈现的标签形态——浏览器类型演进后标签命名段与版本探测命令awk {print $5}同步变化但版本探测 → 组装标签 → 双镜像分发的主干流程保持一致。七、实战如何拉取与使用这些标签基于发布记录中的标签开发者可以精确消费对应镜像。例如拉取完整网格版本docker pull selenium/node-chrome:131.0.6778.264-chromedriver-131.0.6778.264-grid-4.35.0-20250909或按大版本线选择易记标签docker run -d -p 4444:4444 --shm-size2g --name chrome131 \ selenium/standalone-chrome:131.0-20250909随后即可通过http://localhost:4444/wd/hub接入 Selenium Grid 执行自动化用例。在 docker-compose 编排中同样可以直接引用selenium/node-chrome:131.0-20250909从而把浏览器版本、驱动版本与网格版本同时固化保证测试环境的可复现性。若需自行复现发布流程可在本地构建好node-chrome:4.35.0-20250909后执行./tag_and_push_browser_images.sh 4.35.0 20250909 selenium false chrome true八、小结以 Chrome 131 归档发布记录为样本可以看到docker-selenium 的浏览器镜像发布是一个高度脚本化、版本自证的过程版本号来自容器内二进制实测标签按完整/短版本 × 网格/构建日期正交组合RELEASE_OLD_VERSION控制浮动标签的增删retag统一处理本地打标、推送与 registry 间索引复制Chrome/ChromeDriver 则在构建期完成 1:1 对齐。读懂这条流水线就等于掌握了整个项目浏览器镜像版本矩阵的生成原理。赞分享测试后端云原生容器编排可观测性【免费下载链接】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_and_push_browser_images.sh 全解析以 Chrome 115 发布记录为例docker selenium 浏览器镜像标签体系与 tag_and_push_browser_images.sh 全解析以 Chrome 115 发布记录为测试后端云原生容器编排可观测性docker-selenium 浏览器镜像标签体系解析以 Selenium Grid 4.34.0 Chrome 95 发布记录为例docker selenium 浏览器镜像标签体系解析以 Selenium Grid 4.34.0 Chrome 95 发布记录为例 本篇技术指南围绕 d测试后端云原生容器编排可观测性docker-selenium 浏览器镜像标签体系解析以 Selenium Grid 4.32.0 Chrome 124 发布记录为例docker selenium 浏览器镜像标签体系解析以 Selenium Grid 4.32.0 Chrome 124 发布记录为例 本篇技术指南以 d测试后端云原生容器编排可观测性上一篇WatchYourLAN常见问题FAQ从部署到功能故障排除下一篇llmware故障恢复高可用性与灾难备份的方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

借助OpenClaw能自动生成标书吗?TaoToken统一Key打通RPA与爬虫链路

借助OpenClaw能自动生成标书吗?TaoToken统一Key打通RPA与爬虫链路

/* 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 12:54:30 阅读更多 →
C语言获取并设置鼠标位置:GetCursorPos 与 SetCursorPos 实战大纲

C语言获取并设置鼠标位置:GetCursorPos 与 SetCursorPos 实战大纲

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

2026/10/10 14:56:20 阅读更多 →
【电机滤波例程5】渐消因子自适应扩展卡尔曼滤波(EKF),MATLAB。PMSM负载突变下的状态估计。附下载链接

【电机滤波例程5】渐消因子自适应扩展卡尔曼滤波(EKF),MATLAB。PMSM负载突变下的状态估计。附下载链接

附下载链接,有中文注释,可联系我获取代码定制和讲解服务 文章目录程序讲解概述算法原理实现流程运行结果MATLAB源代码程序讲解 概述 在负载增广扩展卡尔曼滤波(EKF)中加入有界渐消因子,根据新息能量调整预测协方差&a…

2026/10/9 12:54:30 阅读更多 →

最新新闻

OPC DA报错找不到OpcEnum?补装OPC Core Components 2.0快速解决

OPC DA报错找不到OpcEnum?补装OPC Core Components 2.0快速解决

简介:OPC Core Components 2.0 是OPC基金会发布的核心组件集合,主要面向工业自动化开发者、系统集成商与现场维护人员。它直击电脑未安装 OpcEnum 时无法枚举和访问网络 OPC 服务器的问题,完成组件安装即可恢复通信能力。OPC UA 作为下一代标…

2026/10/10 14:56:02 阅读更多 →
《创业之路》-1032-细读商业经典 - 思维惯性(思维)和路径依赖(行为),是制约人适应新环境、无法跨越周期的最大的制约力

《创业之路》-1032-细读商业经典 - 思维惯性(思维)和路径依赖(行为),是制约人适应新环境、无法跨越周期的最大的制约力

思维惯性与路径依赖:跨周期失败的终极底层枷锁这句话戳中了所有个人、企业乃至国家跨越周期失败的共同根源:绝大多数人不是能力不够、资源不足、机会没赶上,而是被过去成功塑造的思维惯性和路径依赖牢牢锁死,用上一个周期的成功逻…

2026/10/10 14:56:02 阅读更多 →
SLR(1)语法分析器实战:从编译原理原理到自定义文法实现

SLR(1)语法分析器实战:从编译原理原理到自定义文法实现

简介:这是基于Java实现的SLR(1)语法分析器实验源码包,面向编译原理课程学习者与需要动手实践语法分析器构建的开发者。资源围绕自底向上的SLR(1)解析方法展开,涵盖文法表示、消除左递归与左公因子、FOLLOW集构造、闭包与GO TO集计算以及分析表…

2026/10/10 14:56:02 阅读更多 →
异常安全编程实战:从资源管理到事务性更新的系统稳定性指南

异常安全编程实战:从资源管理到事务性更新的系统稳定性指南

做后端开发这些年,我见过太多线上事故。但最让我头疼的,往往不是那些高深的并发问题,而是一些看起来人畜无害的代码,在某个异常被抛出后,把整个系统的数据搞得一团糟。最近不少朋友也在聊“安全服务异常,无…

2026/10/10 14:56:02 阅读更多 →
《创业之路》-1031-细读商业经典 - 为什么有人摆脱不了贫穷:被锁死在「被动贫困闭环」里的人

《创业之路》-1031-细读商业经典 - 为什么有人摆脱不了贫穷:被锁死在「被动贫困闭环」里的人

为什么有人摆脱不了贫穷:被锁死在「被动贫困闭环」里的人摆脱不了贫穷,本质上从来不是懒、笨或者运气差,而是陷入了一套和「主动演化逻辑」完全反向的被动贫困闭环:认知上执念确定性、行为上习惯执行型、价值观上信奉存量博弈&…

2026/10/10 14:56:02 阅读更多 →
Virtual Mac 安装全流程:从 Dopamine 越狱到 Sileo 部署 macOS 虚拟机

Virtual Mac 安装全流程:从 Dopamine 越狱到 Sileo 部署 macOS 虚拟机

【免费下载链接】VirtualMacOniPad People have dreamed of running macOS on iPad for more than a decade. Today, that dream comes true. With Virtual Mac, iPad finally breaks free from iPadOS, enabling pro apps like Xcode, Terminal, Final Cut Pro, Logic Pro, an…

2026/10/10 14:55:01 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

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/10 11:14:25 阅读更多 →
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/10 1:36:08 阅读更多 →
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/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/10 5:23:50 阅读更多 →
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/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练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/10 10:38:42 阅读更多 →