docker-selenium 浏览器镜像标签体系详解:从 Chrome 123 发布记录读懂 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点击查看免费下载本篇技术指南以 docker-selenium 仓库中 Chrome 123 发布记录 为切入点逐层拆解浏览器镜像版本标签的生成命令、命名规范与底层实现帮助读者掌握selenium/node-chrome与selenium/standalone-chrome系列镜像的标签含义、发布脚本参数语义以及按需固定浏览器版本的拉取策略。读完本文你将能够独立读懂仓库内任意一份chrome_*.md/edge_*.md/firefox_*.md发布记录并准确选用合适版本的镜像标签接入 Selenium Grid。什么是浏览器镜像发布记录在 CHANGELOG/README.md 版本矩阵中每一个✓都指向一份对应 Grid 版本与浏览器版本的详细 changelog 文件。例如CHANGELOG/archived/4.29.0/chrome_123.md就是 Selenium Grid 4.29.0 对 Chrome 123 系列镜像的标签发布实录。这类文件并非泛泛的更新日志而是一段可直接复现的发布命令及其完整标准输出。以本文关联文档为例其内容如下./tag_and_push_browser_images.sh 4.29.0 20250303 selenium false chrome true Tagging images for browser chrome, version 4.29.0, build date 20250303, namespace selenium Selenium Grid version - 4.29.0-20250303 Chrome version - 123.0.6312.122 Short Chrome version - 123.0 ChromeDriver version - 123.0.6312.122 Short ChromeDriver version - 123.0 Tagged selenium/node-chrome:123.0.6312.122-chromedriver-123.0.6312.122-grid-4.29.0-20250303 Tagged selenium/standalone-chrome:123.0.6312.122-chromedriver-123.0.6312.122-grid-4.29.0-20250303 Tagged selenium/node-chrome:123.0.6312.122-chromedriver-123.0.6312.122-20250303 Tagged selenium/standalone-chrome:123.0.6312.122-chromedriver-123.0.6312.122-20250303 Tagged selenium/node-chrome:123.0.6312.122-20250303 Tagged selenium/standalone-chrome:123.0.6312.122-20250303 Tagged selenium/node-chrome:123.0-chromedriver-123.0-grid-4.29.0-20250303 Tagged selenium/standalone-chrome:123.0-chromedriver-123.0-grid-4.29.0-20250303 Tagged selenium/node-chrome:123.0-chromedriver-123.0-20250303 Tagged selenium/standalone-chrome:123.0-chromedriver-123.0-20250303 Tagged selenium/node-chrome:123.0-20250303 Tagged selenium/standalone-chrome:123.0-20250303这段输出包含了三层信息发布命令本身、容器内探测到的浏览器与驱动版本、以及最终生成的全部镜像标签。下面逐一解读。发布命令的七个参数发布记录第一行调用了仓库根目录的 tag_and_push_browser_images.sh 脚本参数按顺序对应脚本开头的位置参数tag_and_push_browser_images.sh参数示例值脚本变量含义14.29.0VERSIONSelenium Grid 版本号与构建镜像时的VERSION一致220250303BUILD_DATE构建日期YYYYMMDD与VERSION组合成TAG_VERSION4.29.0-202503033seleniumNAMESPACE镜像仓库命名空间即镜像名selenium/node-chrome的前缀4falsePUSH_IMAGE是否执行docker pushfalse表示本次只打标签不推送5chromeBROWSER浏览器类型脚本支持chrome、chromium、edge、firefox、chrome-for-testing6trueRELEASE_OLD_VERSION是否按旧版本策略发布直接决定浮动标签是否生成详见下文7省略PLATFORM版本探测时使用的平台默认linux/amd64脚本首先拼接出TAG_VERSION随后进入case ${BROWSER}分发。对于chrome分支它会在容器内运行两条探测命令从镜像内部直接读取版本号tag_and_push_browser_images.shCHROME_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})这正是发布记录中 Chrome version - 123.0.6312.122 与 ChromeDriver version - 123.0.6312.122 两行的来源先以node-chrome:4.29.0-20250303启动一次临时容器再对google-chrome --version与chromedriver --version的输出用awk截取版本号字段。因此标签中的版本信息并非人工填写而是由已构建镜像实测得到保证了标签即事实。标签命名规范全版本、短版本与日期维度观察发布记录中 12 行Tagged输出node-chrome与standalone-chrome两个镜像各获得 6 个标签。这 6 个标签由脚本中预定义的CHROME_TAGS数组生成tag_and_push_browser_images.sh可归纳为三条命名族全版本 驱动 Grid 全量标识123.0.6312.122-chromedriver-123.0.6312.122-grid-4.29.0-20250303—— 同时锁定浏览器小版本、驱动小版本与 Grid 发布号信息最完整适合需要绝对可复现的测试环境。全版本 驱动 日期123.0.6312.122-chromedriver-123.0.6312.122-20250303—— 精确到构建日期适用于某个日期快照。仅浏览器版本 日期123.0.6312.122-20250303—— 当浏览器与驱动版本一致Chrome 123 与 ChromeDriver 123 恰好同号时最简洁的日期快照。以上每条族再各生成一个短版本变体即把完整版本123.0.6312.122截取为主版本号123.0Chrome 123 与 ChromeDriver 123.0 均如此得到123.0-chromedriver-123.0-grid-4.29.0-20250303123.0-chromedriver-123.0-20250303123.0-20250303短版本由脚本中的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]} }短版本标签的价值在于使用者只需记住123.0这个主版本号即可引用该 Chrome 大版本而不必关心其后续小版本演进到123.0.63xx.x的哪一个。RELEASE_OLD_VERSION 与浮动标签细心的读者会发现这份发布记录没有生成selenium/node-chrome:123.0、selenium/node-chrome:123.0.6312.122这类不带日期、不带 grid 标识的浮动标签。原因在于命令第 6 个参数为true。脚本逻辑如下tag_and_push_browser_images.shif [ ${RELEASE_OLD_VERSION} false ]; then CHROME_TAGS( ${CHROME_VERSION}-chromedriver-${CHROMEDRIVER_VERSION} ${CHROME_VERSION} ${CHROME_SHORT_VERSION}-chromedriver-${CHROMEDRIVER_SHORT_VERSION} ${CHROME_SHORT_VERSION} ) fi也就是说只有当RELEASE_OLD_VERSIONfalse参数 6 为false时才会追加 4 个浮动标签123.0.6312.122-chromedriver-123.0.6312.122、123.0.6312.122、123.0-chromedriver-123.0、123.0。反之RELEASE_OLD_VERSIONtrue时仅保留带日期/grid 标识的 6 个标签。从脚本逻辑可以推断其设计意图123.0这类浮动标签会被反复复用——每当 Chrome 123 系列发布新小版本并再次执行发布流程时123.0会被重新指向最新的 123.x。若为旧版本如 4.29.0 网格发布期间同时维护 Chrome 95 到 134 多个大版本CHANGELOG/README.md 的矩阵证实了这一点也打浮动标签就会与最新小版本互相覆盖、改变使用者拉到的镜像内容。因此RELEASE_OLD_VERSIONtrue的含义是仅为该旧版本补充确定性的日期标签而不抢占浮动标签。该参数由 Makefile 的$(RELEASE_OLD_VERSION)变量透传Makefile发布流水线据此对每个浏览器版本执行一次脚本。标签背后的镜像构建链发布脚本探测到的 Chrome 123 与 ChromeDriver 123.0.6312.122来自 NodeChrome/Dockerfile 构建阶段的安装结果浏览器部分由 install-chrome.sh 完成默认安装google-chrome-stable渠道也支持通过google-chrome-stable123.0.6167.120-1这类渠道版本语法精确安装指定小版本构建期可通过CHROME_VERSION构建参数控制。驱动部分由 install-chromedriver.sh 完成未指定CHROME_DRIVER_VERSION时脚本先读取已安装 Chrome 的主版本号如 123再据此解析对应 ChromeDriveramd64 上从 Chrome for Testing 渠道下载其他架构回退到 Chromium 驱动包。构建完成后Dockerfile 还会把浏览器版本写入/opt/selenium/browsers/chrome/version供 Selenium 配置使用NodeChrome/Dockerfile。因此整个链路是闭环的Dockerfile 安装 → 版本探测脚本实测 → 标签生成 → 用户按标签拉取任何一环的版本信息都以镜像内真实可执行文件为准。发布流程中的调用关系仓库通过 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 tag_and_push_chrome_images: ./tag_and_push_browser_images.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) $(PUSH_IMAGE) chrome $(RELEASE_OLD_VERSION)即一次make tag_and_push_browser_images会按顺序为五种浏览器chrome、chrome-for-testing、chromium、firefox、edge各执行一遍打标签脚本。Chrome 123 发布记录正是其中chrome分支在某次发布时的实录。脚本的retag函数tag_and_push_browser_images.sh还支持两种发布模式常规模式docker tag本地镜像并可选docker push对应参数 4 的PUSH_IMAGE开关。镜像晋升模式当PROMOTE_TAGStrue由 CI 在发布已测试镜像而非重建镜像时设置时改用docker buildx imagetools create在 registry 与 registry 之间复制 manifest从而保留多架构特性若同时设置PROMOTE_GHCR_NAMESPACE还会在同一次调用中把标签镜像同步到 GHCR 命名空间。使用者视角如何按标签固定浏览器版本CHANGELOG 版本矩阵存在的意义正是让使用者找到标签、拉取镜像、直接开测。以本记录为例可用的确定性标签包括docker pull selenium/node-chrome:123.0.6312.122-chromedriver-123.0.6312.122-grid-4.29.0-20250303 docker pull selenium/standalone-chrome:123.0-chromedriver-123.0-20250303 docker pull selenium/node-chrome:123.0-20250303选择建议追求精确可复现例如回归排查、与线上失败现场完全一致使用全版本 驱动 grid 标识的最长标签只需要某个构建日期的快照使用带-20250303的标签只关心浏览器主版本且接受其小版本随发布更新使用123.0浮动标签注意浮动标签由RELEASE_OLD_VERSIONfalse的发布写入并随该系列更新重新指向。仓库同时提供了大量docker-compose-v3*.yml编排文件如 docker-compose-v3.yml可在此基础上将上述 node/standalone 镜像接入完整的 Selenium Grid 拓扑。需要说明的是CHANGELOG/README.md 明确提醒项目并未对每一种 Grid 版本与浏览器版本的组合做全量兼容性测试使用者应根据自身测试需求评估并自行决定选用哪个组合。小结一份看似只有命令与输出的发布记录实际承载了 docker-selenium 镜像工程化的完整语义tag_and_push_browser_images.sh通过容器内实测版本 → 拼接标签族 → 按发布策略决定浮动标签三步把 Grid 版本、浏览器版本、驱动版本与构建日期编织成一套自描述、可检索、可精确复现的镜像标签体系。理解这套命名规则后无论是阅读其余archived/4.29.0目录下的 chrome_134.md 等发布记录还是在跨浏览器测试中固定 Chrome 版本都能快速定位到正确的镜像标签。赞分享测试后端云原生容器编排可观测性【免费下载链接】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 4.48.0 浏览器镜像 Tag 体系深度解读从 Edge 123 发布记录到 tag_and_push_browser_images.sh 实现剖析docker selenium 4.48.0 浏览器镜像 Tag 体系深度解读从 Edge 123 发布记录到 tag_and_push_browser_im测试后端云原生容器编排可观测性docker-selenium 镜像标签生成指南解读 tag_and_push_browser_images.sh 与 Chrome 112 发布记录docker selenium 镜像标签生成指南解读 tag_and_push_browser_images.sh 与 Chrome 112 发布记录 本篇技测试后端云原生容器编排可观测性docker-selenium Chrome 129 镜像发布记录解读浏览器镜像 Tag 约定与 tag_and_push_browser_images.sh 机制剖析docker selenium Chrome 129 镜像发布记录解读浏览器镜像 Tag 约定与 tag_and_push_browser_images.sh测试后端云原生容器编排可观测性上一篇抖音下载器终极指南3分钟学会批量下载无水印视频下一篇FastF1 贡献指南从 Pull Request 规范到代码质量门槛的完整实践创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Positron 风格化 SVG 插画规范:从画布、调色板到可机器校验的对齐契约

Positron 风格化 SVG 插画规范:从画布、调色板到可机器校验的对齐契约

开发工具代码编辑器数据科学 【免费下载链接】positron Positron, a next-generation data science IDE 项目地址: https://gitcode.com/gh_mirrors/po/positron 点击查看 免费下载 本篇指南基于 Positron 仓库内置的视觉规范文档 references/style.md 及配套的 SK…

2026/10/5 2:09:29 阅读更多 →
QGroundControl V5.1 之后的新特性速览:GeoMap 3D 地图引擎、ROI 高度设置与自定义设置页

QGroundControl V5.1 之后的新特性速览:GeoMap 3D 地图引擎、ROI 高度设置与自定义设置页

无人机智能硬件 【免费下载链接】qgroundcontrol Cross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows) 项目地址: https://gitcode.com/gh_mirrors/qg/qgroundcontrol 点击查看 免费下载 本文基于 QGroundControl 用户指南中…

2026/10/5 2:08:29 阅读更多 →
基于 YOLO11 的多语种交通标志与信号灯识别系统 | 完整源码分享

基于 YOLO11 的多语种交通标志与信号灯识别系统 | 完整源码分享

基于 YOLO11 的多语种交通标志与信号灯识别系统 出海驾驶最头疼的不是开车,而是"路边那块阿拉伯文/英文标志到底什么意思"。 一、背景 1.1 行业痛点 随着出海驾驶、跨境物流、海外路况巡检、ADAS 出海产品越来越普遍,多语种交通标识感知成为绕…

2026/10/5 2:08:28 阅读更多 →

最新新闻

Redis事务真相:从MULTI到WATCH,乐观锁与Lua脚本实战

Redis事务真相:从MULTI到WATCH,乐观锁与Lua脚本实战

1. 从“Redis事务到底是不是事务”说起先丢一个很多面试官爱问、很多同学也容易翻车的问题:Redis事务和MySQL事务,到底是不是一回事?先说结论——它们根本不在一个维度上。MySQL事务要的是ACID,尤其是隔离性和持久性;R…

2026/10/5 2:46:45 阅读更多 →
Linux Apache HTTP Server 怎么在 Ubuntu/Debian 系统上使用 apt 安装

Linux Apache HTTP Server 怎么在 Ubuntu/Debian 系统上使用 apt 安装

前言在 Ubuntu 或 Debian 上装 Apache HTTP Server,网上能搜到的教程有一大半是从 RHEL/CentOS 抄过来的:包名写 httpd、服务名写 httpd、配置文件写 /etc/httpd/conf/httpd.conf。这些写法在 Ubuntu 上一条都对不上——apt 仓库里的包叫 apache2&#x…

2026/10/5 2:46:45 阅读更多 →
基于JSP+Servlet+MySQL的早餐外卖店管理系统设计与实现

基于JSP+Servlet+MySQL的早餐外卖店管理系统设计与实现

做过JavaWeb课设的同学,应该对JSPServlet这套“土生土长”的技术栈不陌生。早餐外卖店管理系统是我带过多次的项目选题,它覆盖了一个典型Web系统所需要的大部分知识点:注册登录、用户会话、菜单管理、购物车、订单提交、数据库事务&#xff0…

2026/10/5 2:46:45 阅读更多 →
DeepSeek智能体平台承保理赔自动化落地实战解析

DeepSeek智能体平台承保理赔自动化落地实战解析

简介:面向保险科技从业者、AI解决方案架构师及算法工程师,这份868页PDF系统呈现DeepSeek智能体平台在承保理赔全流程中的智能化改造与自动集成方案。资源共51个大章节,前20章内容涵盖行业痛点拆解、平台技术架构、数据资产梳理与标准化、结构…

2026/10/5 2:46:45 阅读更多 →
JSP+Servlet早餐外卖系统开发实战:从数据库到部署全流程解析

JSP+Servlet早餐外卖系统开发实战:从数据库到部署全流程解析

早餐外卖这个场景特别适合JSPServlet这套老牌技术栈来练手:业务链路完整,从前台点餐到后台出餐都有,又不至于复杂到失控。今天把这个基于JavaWeb和MySQL的JSPServlet早餐外卖店管理系统拆开揉碎讲一遍,从数据库设计到前端交互&…

2026/10/5 2:46:44 阅读更多 →
昇腾部署DeepSeek V3/R1:从MLA/FP8到性能调优的关键实践

昇腾部署DeepSeek V3/R1:从MLA/FP8到性能调优的关键实践

简介:大模型推理部署的难度往往不在模型本身,而在于显存占用与通信效率。以DeepSeek-V3/R1为例,其MLA机制通过潜空间压缩KV Cache,显著降低长上下文下的显存负担;DeepSeekMoE的稀疏激活则有效控制计算量,但…

2026/10/5 2:45:44 阅读更多 →

日新闻

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

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

2026/10/5 0:00:22 阅读更多 →
AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

1. 从“plugins”这个词说起:它到底在解决什么问题如果你最近在折腾 AI 编程工具,尤其是 Cursor、Codex CLI、Claude Code 这类带 CLI 的编辑器或命令行助手,那你大概率绕不开一个词——plugins。这个词本身不新鲜,从浏览器到 IDE…

2026/10/5 0:00:23 阅读更多 →
第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

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

2026/10/5 0:00:23 阅读更多 →

周新闻

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/4 1:00:58 阅读更多 →
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/5 1:10:22 阅读更多 →
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/4 1:00: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/4 11:40:45 阅读更多 →
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/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练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/4 20:14:29 阅读更多 →