docker-selenium 浏览器镜像版本标签体系全解析:从 Chrome 133 发布记录解读 `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_133.md 发布记录为核心完整拆解该项目为 Chrome 133.0.6943.141 生成的全部镜像标签并结合 tag_and_push_browser_images.sh 与 Makefile 中的实现细节说明浏览器镜像的版本探测、标签命名规则、发布参数与多架构镜像处理原理。读完本文你将掌握 docker-selenium 浏览器镜像node/standalone 系列的标签语义能够按需精确拉取指定 Chrome ChromeDriver Selenium Grid 组合的镜像并理解该仓库浏览器镜像发布流水线的工作方式。一、记录背景一次完整的 Chrome 133 镜像打标签发布CHANGELOG/archived/4.32.0/目录保存的是 Selenium Grid 4.32.0 版本周期内各浏览器镜像发布时实际执行的打标签脚本输出。其中 chrome_133.md 完整记录了 2025 年 5 月 15 日为 Chrome 133 执行的一次发布./tag_and_push_browser_images.sh 4.32.0 20250515 selenium false chrome true Tagging images for browser chrome, version 4.32.0, build date 20250515, namespace selenium Selenium Grid version - 4.32.0-20250515 Chrome version - 133.0.6943.141 Short Chrome version - 133.0 ChromeDriver version - 133.0.6943.141 Short ChromeDriver version - 133.0 Tagged selenium/node-chrome:133.0.6943.141-chromedriver-133.0.6943.141-grid-4.32.0-20250515 Tagged selenium/standalone-chrome:133.0.6943.141-chromedriver-133.0.6943.141-grid-4.32.0-20250515 ...这组输出并非随意文本它对应着仓库中真实存在的发布脚本的一次调用。命令行上的 7 个位置参数分别定义了这次发布的关键属性位置取值含义$14.32.0Selenium Grid 版本号VERSION$220250515构建日期BUILD_DATE决定基础标签4.32.0-20250515$3selenium镜像命名空间NAMESPACE即 Docker Hub 上的组织名$4false是否立即推送PUSH_IMAGE本次只打标签不推送$5chrome浏览器类型BROWSER脚本的分支选择依据$6true是否为旧版本补发标签RELEASE_OLD_VERSION$7缺省目标平台PLATFORM缺省为linux/amd64同类归档记录还包含 Edge 133edge_133.mdEdge 133.0.3065.92 EdgeDriver 133.0.3065.92与 Firefox 135firefox_135.mdFirefox 135.0.1 GeckoDriver 0.36.0说明该打标签机制对 Chrome、Chromium、Edge、Firefox、Chrome for Testing 五种浏览器一视同仁本文以 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})即先假定镜像selenium/node-chrome:4.32.0-20250515已构建完成然后用docker run --rm在容器内执行google-chrome --version取输出第 3 个字段得到133.0.6943.141同理执行chromedriver --version取第 2 个字段得到133.0.6943.141再由short_version()函数把133.0.6943.141截断为133.0取前两段用于生成短版本标签。function short_version() { local __long_version$1 local __version_split(${__long_version//./ }) echo ${__version_split[0]}.${__version_split[1]} }各浏览器分支的字段提取位置略有差异例如 Firefox 分支取firefox --version的第 3 个字段与geckodriver --version首行的第 2 个字段Edge 分支取microsoft-edge --version第 3 个字段与msedgedriver --version第 4 个字段。这也解释了为什么 CHANGELOG 中各浏览器记录的输出格式彼此不同——它们忠实反映了各自命令的实际输出结构。为什么版本会与 Grid 版本解耦因为浏览器二进制是在构建镜像时由镜像内脚本安装的。以 NodeChrome/Dockerfile 为例install-chrome.sh默认安装google-chrome-stable渠道可通过CHROME_VERSION构建参数指定具体版本见 install-chrome.shinstall-chromedriver.sh则默认根据已安装 Chrome 的主版本号自动匹配 ChromeDriver见 install-chromedriver.sh。因此同一个 Grid 4.32.0 周期内可以同时发布 Chrome 133、134、135 等多套浏览器镜像标签体系必须同时承载 Grid 版本、浏览器版本、驱动版本三个维度。三、标签体系一次发布生成的 10 类标签脚本为node-chrome与standalone-chrome各生成一套完全平行的标签见 tag_and_push_browser_images.sh因为这两类镜像内容相同只是启动形态不同Node 角色接入 GridStandalone 自包含。归档记录中实际产出的标签可归纳为以下五组1. 全版本 Grid 版本最长标签信息最全133.0.6943.141-chromedriver-133.0.6943.141-grid-4.32.0-20250515格式为Chrome全版本-chromedriver-ChromeDriver全版本-grid-Grid版本-构建日期一次锁定浏览器、驱动、Grid 三个版本维度适合需要严格复现测试环境的场景。2. 全版本 构建日期133.0.6943.141-chromedriver-133.0.6943.141-20250515 133.0.6943.141-20250515前者同时锁定浏览器与驱动后者只锁定浏览器版本与构建日期驱动随 Chrome 自动匹配。3. 短版本 Grid 版本 / 构建日期本组共 5 个133.0-chromedriver-133.0-grid-4.32.0-20250515 133.0-chromedriver-133.0-20250515 133.0-20250515使用133.0短版本号表示该大版本下的最新小版本适合日常使用——当 Chrome 133 系列发布新补丁时重新构建并覆盖这些标签即可。4. 无日期前缀的裸版本标签本组 4 个133.0.6943.141-chromedriver-133.0.6943.141 133.0.6943.141 133.0-chromedriver-133.0 133.0这些是最常用、最易记的标签。注意它们在脚本中受RELEASE_OLD_VERSION参数控制只有当$6为false即当前周期首个版本时才生成避免旧版本覆盖新版本的裸标签。5. 镜像名 × 标签的完整组合归档记录显示每个标签都同时打到selenium/node-chrome和selenium/standalone-chrome两个镜像上对应脚本末尾的循环for chrome_tag in ${CHROME_TAGS[]}; do retag node-chrome ${chrome_tag} retag standalone-chrome ${chrome_tag} done四、retag与PUSH_IMAGE本地打标签与推送的分工所有标签都是通过统一的retag()函数落地的见 tag_and_push_browser_images.shfunction retag() { local __image$1 local __tag$2 local __source${NAMESPACE}/${__image}:${TAG_VERSION} if [ ${PROMOTE_TAGS} true ]; then docker buildx imagetools create ... return fi docker tag ${__source} ${NAMESPACE}/${__image}:${__tag} echo Tagged ${NAMESPACE}/${__image}:${__tag} if [ ${PUSH_IMAGE} true ]; then docker push ${NAMESPACE}/${__image}:${__tag} fi }它的核心动作是把基础镜像selenium/node-chrome:4.32.0-20250515复制出第 3 节所列的所有别名标签。归档记录中PUSH_IMAGEfalse所以只执行docker tag与echo Tagged ...——这正是记录里每一行Tagged输出的来源。若第五个参数改为true每个标签都会紧跟一次docker push。此外retag还支持PROMOTE_TAGStrue的发布优化路径当测试已通过、发布时希望直接推广已验证镜像而非重新构建时改用docker buildx imagetools create在 registry 之间复制多架构 manifest index避免docker tag只能操作本地单架构镜像的限制。该机制同时受PROMOTE_GHCR_NAMESPACE控制可在一个调用内同步镜像到 GHCR 命名空间。五、如何用这些标签拉取与运行镜像理解标签体系后实际使用就非常直接。以归档记录对应的 4.32.0 版本为例# 锁定 Chrome 133 全版本 对应 ChromeDriver Grid 4.32.0 docker pull selenium/node-chrome:133.0.6943.141-chromedriver-133.0.6943.141-grid-4.32.0-20250515 # 日常使用短版本标签取 133 系列最新补丁 docker pull selenium/node-chrome:133.0 docker pull selenium/standalone-chrome:133.0在 compose 编排中镜像标签直接写在image字段。参考当前仓库的 docker-compose-v3.yml将selenium-hub与各浏览器节点组合成 Gridservices: chrome: image: selenium/node-chrome:4.48.0-20260905 # 当前版本示例可替换为任意上述标签 platform: linux/amd64 shm_size: 2gb depends_on: - selenium-hub environment: - SE_EVENT_BUS_HOSTselenium-hub selenium-hub: image: selenium/hub:4.48.0-20260905 container_name: selenium-hub ports: - 4442:4442 - 4443:4443 - 4444:4444建议的版本选择原则CI 环境、需要结果可复现使用第 1 组最长标签三版本维度全部固定日常开发、跟随补丁使用133.0短标签自动跟进该大版本的最新构建跨浏览器矩阵可同时部署 chrome/edge/firefox 节点分别对应 node-chrome、node-edge、node-firefox并配合SE_EVENT_BUS_HOST指向 Hub实现多浏览器并行自动化。六、发布流程自动化Makefile 中的编排打标签脚本不是孤立运行的它被 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)其中VERSION、BUILD_DATE、NAMESPACE、PUSH_IMAGE、RELEASE_OLD_VERSION均可在命令行覆盖例如make tag_and_push_chrome_images VERSION4.32.0 BUILD_DATE20250515 PUSH_IMAGEtrue该目标的设计动因在 Makefile 注释中说明它源于 SeleniumHQ/docker-selenium#992 对应的需求为浏览器镜像提供更丰富的附加标签让用户无需知道完整的三段式版本就能通过selenium/node-chrome:133.0这类易记标签拉取镜像。归档记录中$6传true的场景对应旧版本补发RELEASE_OLD_VERSIONtrue时不生成第 4 组裸版本标签从而保护已存在的裸标签不被旧版本覆盖。七、版本一致性的底层保障安装脚本如何保证 Chrome 与 ChromeDriver 同步标签中的Chrome 133.0.6943.141与ChromeDriver 133.0.6943.141完全一致并非巧合而是镜像构建脚本刻意保证的结果install-chromedriver.sh 在未显式指定CHROME_DRIVER_VERSION时会先执行google-chrome --version提取主版本号如133再据此解析驱动来源与版本amd64 平台上从 Chrome for Testing 官方渠道获取同版本 ChromeDriverCfT 保证了版本号完全对应旧版本Chrome 115则走chromedriver.storage.googleapis.com的LATEST_RELEASE_major接口非 amd64 架构如 arm64因 Google 不发布对应 ChromeDriver回退到 Debian 的chromium-driver包版本号带-1修订后缀脚本会剥离去掉从而保证驱动主版本与 Chrome 一致。因此标签中chromedriver-133.0.6943.141与133.0.6943.141的完全同步是安装脚本版本解析逻辑的必然结果也是该标签体系可靠性的基础。若需构建自定义版本组合可在构建时通过 NodeChrome/Dockerfile 暴露的CHROME_VERSION、CHROME_DRIVER_VERSION等ARG覆盖。八、小结读懂一张发布记录的三个要点三个版本维度每条浏览器标签同时表达 Grid 版本、浏览器版本、驱动版本归档记录中的每一行Tagged都是 tag_and_push_browser_images.sh 中retag()的一次真实输出两种长度全版本标签用于精确复现短版本标签133.0用于跟随大版本补丁两者由short_version()从探测到的完整版本派生一套发布参数VERSION/BUILD_DATE/NAMESPACE/PUSH_IMAGE/BROWSER/RELEASE_OLD_VERSION/PLATFORM七个参数完全决定一次发布的标签范围与推送行为配合 Makefile 的make tag_and_push_*_images目标即可复用整套流程。对照阅读同目录下的 edge_133.md、firefox_135.md或当前周期的 chrome-for-testing_141.md可以确认这套机制在 Edge/Firefox/Chromium/Chrome for Testing 上以完全一致的逻辑运行——这正是 docker-selenium 多浏览器镜像矩阵发布的核心支撑。赞分享测试后端云原生容器编排可观测性【免费下载链接】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 发布记录读懂 tag_and_push_browser_images.shdocker selenium 浏览器镜像标签体系详解从 Chrome 123 发布记录读懂 tag_and_push_browser_images.sh 本测试后端云原生容器编排可观测性docker-selenium 浏览器镜像标签体系全解从 Chrome 96 的标签生成记录看 tag_and_push_browser_images.sh 的版本化发布机制docker selenium 浏览器镜像标签体系全解从 Chrome 96 的标签生成记录看 tag_and_push_browser_images.sh测试后端云原生容器编排可观测性docker-selenium 浏览器镜像标签体系与 tag_and_push_browser_images.sh 全解析以 Chrome 115 发布记录为例docker selenium 浏览器镜像标签体系与 tag_and_push_browser_images.sh 全解析以 Chrome 115 发布记录为测试后端云原生容器编排可观测性上一篇Paperless-ngx把一摞纸质发票变成一秒钟搜到的档案下一篇Unstract FileManagement API面向组织的文件列表、下载与上传 REST 接口全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

CodeQL C 提取器对分部方法体(Partial Method Bodies)的提取支持

CodeQL C 提取器对分部方法体(Partial Method Bodies)的提取支持

静态分析SAST应用安全漏洞扫描代码质量 【免费下载链接】codeql CodeQL: the libraries and queries that power security researchers around the world, as well as code scanning in GitHub Advanced Security 项目地址: https://gitcode.com/gh_mirrors/co/code…

2026/10/11 4:47:16 阅读更多 →
keep-a-changelog 窄屏语言/版本选择器重设计:从无标签弹层到带标签的全宽 Sheet 实现解析

keep-a-changelog 窄屏语言/版本选择器重设计:从无标签弹层到带标签的全宽 Sheet 实现解析

文档 【免费下载链接】keep-a-changelog If you build software, keep a changelog. 项目地址: https://gitcode.com/gh_mirrors/ke/keep-a-changelog 点击查看 免费下载 本篇技术指南围绕 keep-a-changelog 项目 v2 设计中针对手机窄屏(narrow-screen&…

2026/10/11 4:47:22 阅读更多 →
Midway 全栈工作区:src/server 与 src/web 的目录约定、引用边界与自定义方案

Midway 全栈工作区:src/server 与 src/web 的目录约定、引用边界与自定义方案

后端微服务云原生 【免费下载链接】midway 🍔 A Node.js Serverless Framework for front-end/full-stack developers. Build the application for next decade. Works on AWS, Alibaba Cloud, Tencent Cloud and traditional VM/Container. Super easy integrate w…

2026/10/12 9:20:14 阅读更多 →

最新新闻

计及需求侧响应的配电网供电能力综合评估Matlab实现

计及需求侧响应的配电网供电能力综合评估Matlab实现

供电能力评估这个方向,做配电网规划的人都不陌生。传统做法很简单:把负荷当成一个给定的“硬条件”,算主变、算线路、算N-1通过率,能带多少就是多少。但问题是,现在的负荷已经不再“硬”了——分时电价、可中断负荷、车…

2026/10/14 6:02:23 阅读更多 →
AI协作者实战指南:从提示词工程师到流程编排师

AI协作者实战指南:从提示词工程师到流程编排师

1. 这不是“自动印钞机”,而是AI时代的职业重构现场“自动赚钱时代来了?”——这个标题一出来,朋友圈就炸了。有人截图转发配文“终于等到这一天”,也有人冷笑评论“又一个割韭菜的标题党”。但真正让我坐下来认真拆解它的&#x…

2026/10/14 6:02:23 阅读更多 →
ZeroTermux 内置命令手册:tcpreplay 报文重放与双网卡网络测试实战

ZeroTermux 内置命令手册:tcpreplay 报文重放与双网卡网络测试实战

移动开发开发工具 【免费下载链接】ZeroTermux 项目地址: https://gitcode.com/GitHub_Trending/ze/ZeroTermux 点击查看 免费下载 导读 tcpreplay 是一款基于 PCAP 文件的报文重放工具,它能把用 Wireshark(及其前身 Ethereal)、…

2026/10/14 6:02:23 阅读更多 →
AnyPS5:一套对任意PS5都适用的折腾与优化方案

AnyPS5:一套对任意PS5都适用的折腾与优化方案

看到“AnyPS5”这个名字,估计不少人会误会:是破解方案?是某个新机型?其实都不是。我更愿意把它理解为一套“对任意一台PS5都适用的折腾与优化方案”。这些年帮朋友处理过不少台PS5主机,有的是刚拆封的新机,…

2026/10/14 6:02:23 阅读更多 →
轻资产酒店集团财报解读:现金流、分红与CFO变动背后的逻辑

轻资产酒店集团财报解读:现金流、分红与CFO变动背后的逻辑

最近酒店行业的头条,大概率是这家头部连锁酒店集团的年度成绩单:营收253亿,净利51亿,同时宣布派发约4亿美元股息,同一时间,任职多年的CFO卸任。几个消息堆在一起,很多人第一反应是"业绩不错…

2026/10/14 6:02:23 阅读更多 →
高校农业病虫害智能监测系统设计与实现

高校农业病虫害智能监测系统设计与实现

1. 项目概述农业病虫害监测与预测一直是农业生产中的关键环节。传统的人工巡查方式效率低下且容易遗漏,而基于大数据的智能监测系统正在改变这一现状。这个项目构建了一个面向高校场景的农业病虫害监测与趋势预测系统,整合了数据采集、存储、分析和可视化…

2026/10/14 6:01:22 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29: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/13 22:01:27 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →