ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

docker-selenium 浏览器镜像标签体系解析:以 4.31.0 版 Firefox 124.0.2 发布日志为例

docker-selenium 浏览器镜像标签体系解析:以 4.31.0 版 Firefox 124.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 仓库归档的 4.31.0 发布日志 firefox_124.md 为主线逐行解读其中记录的 Firefox 124.0.2 GeckoDriver 0.36.0 Selenium Grid 4.31.0 镜像打标签全过程并结合 tag_and_push_browser_images.sh、NodeFirefox/Dockerfile 等源码剖析标签命名规范、版本解析逻辑与镜像底层构成。读完本文你将能准确读懂仓库中任一firefox_*.md变更记录的含义按规范理解、选择乃至复现这些镜像标签并清楚selenium/node-firefox与selenium/standalone-firefox镜像里到底装了什么。一、这份发布日志记录了什么归档于CHANGELOG/archived/4.31.0/下的firefox_124.md全文是一段脚本执行日志——它真实记录了 docker-selenium 在发布 4.31.0 版本时为 Firefox 124 镜像打标签时打印的全部输出。日志中的命令行如下./tag_and_push_browser_images.sh 4.31.0 20250414 selenium false firefox true对照脚本开头的参数定义tag_and_push_browser_images.sh这 6 个位置参数的含义分别是参数值作用VERSION4.31.0Selenium Grid 版本号BUILD_DATE20250414构建日期格式YYYYMMDDNAMESPACEselenium镜像命名空间脚本内通过${NAME:-selenium}决定PUSH_IMAGEfalse是否推送镜像false表示只在本机打标签、不执行docker pushBROWSERfirefox浏览器类型驱动case分支选择对应的打标签逻辑RELEASE_OLD_VERSIONtrue是否为旧版本归档场景直接影响标签数量脚本执行后解析出的版本组合是这份日志的核心数据也是理解整个标签体系的钥匙Selenium Grid 版本4.31.0-20250414TAG_VERSION ${VERSION}-${BUILD_DATE}Firefox 版本124.0.2短版本124.0GeckoDriver 版本0.36.0短版本0.36二、完整输出逐行解读六种标签模式日志中Tagged开头的 12 行输出实际是 6 个唯一标签分别打在node-firefox与standalone-firefox两个镜像上。以下完整保留原日志输出Tagged selenium/node-firefox:124.0.2-geckodriver-0.36.0-grid-4.31.0-20250414 Tagged selenium/standalone-firefox:124.0.2-geckodriver-0.36.0-grid-4.31.0-20250414 Tagged selenium/node-firefox:124.0.2-geckodriver-0.36.0-20250414 Tagged selenium/standalone-firefox:124.0.2-geckodriver-0.36.0-20250414 Tagged selenium/node-firefox:124.0.2-20250414 Tagged selenium/standalone-firefox:124.0.2-20250414 Tagged selenium/node-firefox:124.0-geckodriver-0.36-grid-4.31.0-20250414 Tagged selenium/standalone-firefox:124.0-geckodriver-0.36-grid-4.31.0-20250414 Tagged selenium/node-firefox:124.0-geckodriver-0.36-20250414 Tagged selenium/standalone-firefox:124.0-geckodriver-0.36-20250414 Tagged selenium/node-firefox:124.0-20250414 Tagged selenium/standalone-firefox:124.0-20250414对照脚本中firefox分支的FIREFOX_TAGS数组tag_and_push_browser_images.sh这 6 种标签可归纳为三组 × 全版本/短版本两种粒度最完整标签Firefox完整版-geckodriver-驱动完整版-grid-Grid完整版-构建日期如124.0.2-geckodriver-0.36.0-grid-4.31.0-20250414一次性钉住浏览器、驱动、Grid 与构建日期的全部信息浏览器 驱动 构建日期124.0.2-geckodriver-0.36.0-20250414浏览器 构建日期124.0.2-20250414短版本最完整标签124.0-geckodriver-0.36-grid-4.31.0-20250414短版本只取主版本号前两段短版本浏览器 驱动 构建日期124.0-geckodriver-0.36-20250414短版本浏览器 构建日期124.0-20250414。注意由于本次调用第 6 个参数RELEASE_OLD_VERSIONtrue脚本只生成上述 6 个标签。从脚本条件分支tag_and_push_browser_images.sh可以看到当该参数为false时还会追加 4 个不带构建日期的可变标签124.0.2-geckodriver-0.36.0 124.0.2 124.0-geckodriver-0.36 124.0也就是说当前活跃版本发布时124.0、124.0.2这类简洁短标签会被指向最新构建而归档旧版本如本日志对应的 4.31.0只保留带构建日期的标签。结合脚本注释与分支逻辑可以推断这样做的目的是避免旧版本发布后简洁短标签仍留在原地造成标签指向旧构建的歧义——想精确定位归档版本必须使用带20250414等构建日期的完整标签。这一点与 docs/docker-hub/node-firefox.md 中Tagging Conventions的说明一致latest只适合快速体验生产与长期复现测试应选用完整标签以钉住浏览器、驱动与 Grid 的确切组合。三、版本解析标签是怎么算出来的日志中每个版本号都不是手工填写的而是脚本通过docker run进入已构建镜像、读取真实二进制输出来确定的。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 124.0.2因此$3恰好是完整版本号124.0.2geckodriver --version第一行形如geckodriver 0.36.0 (...)NR1取首行、$2即0.36.0短版本由short_version()函数计算tag_and_push_browser_images.sh按.切分后只保留前两段124.0.2 → 124.0、0.36.0 → 0.36。日志输出与脚本逻辑完全对应Firefox version - 124.0.2、Short Firefox version - 124.0、GeckoDriver version - 0.36.0、Short GeckoDriver version - 0.36。随后retag()函数tag_and_push_browser_images.sh为每个标签执行docker tag并在PUSH_IMAGEtrue时执行docker push若启用PROMOTE_TAGStrue则改用docker buildx imagetools create做注册表到注册表的打标签——这样不经过本地拉取能够保留多架构 manifest 列表原样这也是当前发布流程把 CI 中已测试镜像直接提升promote为发布镜像的方式。该脚本在仓库中的正式入口是 Makefile 的tag_and_push_firefox_images目标其调用方式与本日志一致tag_and_push_firefox_images: ./tag_and_push_browser_images.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) $(PUSH_IMAGE) firefox $(RELEASE_OLD_VERSION)此外 Makefile 还提供了firefox_upgrade_version目标用于构建node-firefox/standalone-firefox后依次运行selenium-server.jar info --version、firefox --version、geckodriver --version做发布前验证——这也是本日志中版本探测逻辑的直接来源。四、标签背后的镜像NodeFirefox 构建原理日志中的镜像不是浏览器套壳其内容完全由 NodeFirefox/Dockerfile 决定。读懂该 Dockerfile就能理解124.0.2与0.36.0这两个版本号在构建期如何落地Firefox 的安装策略NodeFirefox/DockerfileFIREFOX_VERSION为构建参数默认latest也支持beta-latest、nightly-latest、devedition-latest、esr-latest以及固定版本号如124.0.2对 amd64 架构、渠道版本latest 系列、或主版本号 ≥ 136 的固定版本走install-firefox-apt.shapt install的 apt 路径对较老的固定版本如本日志的 124.0.2则从 Mozilla 官方 CDN 下载对应linux-arch的.deb包404 时回退到.tar.bz2交由 install-firefox-package.sh 处理——该脚本按 URL 后缀区分.deb/.tar.bz2/.tar.xz三种包格式解包后统一软链/usr/bin/firefox构建末尾还会调用 get_lang_package.sh 从 Mozilla FTP 拉取对应版本的全部.xpi语言包安装到distribution/extensions目录文件按langpack-langfirefox.mozilla.org.xpi重命名因此镜像内置多语言支持。GeckoDriver 的安装NodeFirefox/DockerfileGECKODRIVER_VERSION默认latest构建时通过 GitHub releases 的latest重定向解析出最新发布版本号按架构选择linux64amd64或linux-aarch64arm64的tar.gz下载解压到/opt/geckodriver-版本并软链到/usr/bin/geckodriver。运行时信息的落盘NodeFirefox/Dockerfile构建时还会把浏览器名称、版本号firefox --version第三列以及moz:firefoxOptions.binary写入/opt/selenium/browsers/firefox/供 Node 的配置文件生成逻辑使用其中二进制路径通过SE_BROWSER_BINARY_LOCATION环境变量可覆盖默认/usr/bin/firefox见 ENV_VARIABLES.md。同时镜像预设了SE_OTEL_SERVICE_NAMEselenium-node-firefox与SE_NODE_ENABLE_MANAGED_DOWNLOADStrue后者使 Node 自动管理会话下载文件见 ENV_VARIABLES.md。进程清理守护镜像内的 firefox-cleanup.sh 由 supervisord 拉起周期性地强杀存活超过阈值SE_BROWSER_LEFTOVERS_PROCESSES_SECS默认 7200 秒的firefox-bin残留进程睡眠间隔由SE_BROWSER_LEFTOVERS_INTERVAL_SECS默认 3600 秒控制默认值见 ENV_VARIABLES.md用于长时间运行场景下回收异常残留避免节点被僵尸进程拖垮。五、如何用这些标签运行 Firefox 节点发布日志对应的镜像最终以selenium/node-firefoxGrid Node 模式和selenium/standalone-firefox单机模式两种形态对外提供。以 Node 模式为例官方用法见 docs/docker-hub/node-firefox.md如下# 1. 创建网格网络 docker network create grid # 2. 启动 Hub暴露 4442-4444 端口 docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:latest # 3. 启动 Firefox 节点通过容器名与 Hub 互联 docker run -d --net grid -e SE_EVENT_BUS_HOSTselenium-hub \ --shm-size2g \ selenium/node-firefox:124.0.2-geckodriver-0.36.0-grid-4.31.0-20250414 # 4. 将 WebDriver 测试指向 http://localhost:4444要点启动含浏览器的镜像务必加--shm-size2g使用宿主机共享内存否则浏览器容易因/dev/shm不足崩溃本日志的4.31.0为归档旧版本实测时建议优先使用当前版本目录CHANGELOG/4.48.0/中相同浏览器版本对应的标签其 GeckoDriver 已升级到0.37.1见 firefox_124.md想观察容器内浏览器画面可访问http://localhost:7900/?autoconnect1resizescalepasswordsecret用完清理docker network rm grid。六、归档与版本矩阵这份日志在仓库中的位置所有firefox_*.md变更记录都由 CHANGELOG/README.md 中的版本矩阵统一索引矩阵以 Selenium Grid 版本为行、浏览器版本为列最新版本如 4.48.0的 Firefox 124 记录位于Latest Grid Version区而 4.31.0 属于已归档版本其记录挂在Archived Grid Versions区见 CHANGELOG/README.md链接路径即本日志所在目录。矩阵的动机在 CHANGELOG/README.md 中有明确说明在持续提供最新 Grid 核心功能的同时允许用户钉住特定浏览器版本做跨浏览器测试或规避个别版本的问题。需要特别留意的是文档中的免责声明CHANGELOG/README.md项目并未对每个 Grid 版本 × 每个浏览器版本的全部组合做完整测试选用组合时应结合自身测试需求评估。矩阵与记录文件的生成由 Makefile 的update_browser_versions_matrix目标驱动fetch_firefox_version.py抓取版本、generate-matrix-readme.py 重写矩阵 README这正是本日志与矩阵能保持同步的原因。七、小结CHANGELOG/archived/4.31.0/firefox_124.md看似只是一段打标签输出实则是 docker-selenium 镜像发布体系的一页体检报告它同时记录了发布组合Firefox 124.0.2 GeckoDriver 0.36.0 Grid 4.31.0-20250414、标签规范六种带日期标签 四种可变标签与发布流程镜像内版本探测 →short_version简化 →retag批量打标签。结合 tag_and_push_browser_images.sh 与 NodeFirefox/Dockerfile 阅读本日志你便掌握了这套标签体系的完整闭环看日志定位版本 → 读脚本理解标签 → 查 Dockerfile 确认内容 → 用标签跑测试。赞分享测试后端云原生容器编排可观测性【免费下载链接】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 浏览器镜像标签发布机制解析以 Selenium Grid 4.31.0 的 Firefox 120.0.1 镜像为例docker selenium 浏览器镜像标签发布机制解析以 Selenium Grid 4.31.0 的 Firefox 120.0.1 镜像为例 Sele测试后端云原生容器编排可观测性如何快速找到占用文件的进程PowerToys 文件锁匠完整指南如何快速找到占用文件的进程PowerToys 文件锁匠完整指南 PowerToys 文件锁匠File Locksmith是微软 PowerToys 工具集测试后端云原生容器编排可观测性docker-selenium 浏览器镜像标签体系与发布流程以 Firefox 100.0.2 GeckoDriver 0.37.1 镜像日志为例docker selenium 浏览器镜像标签体系与发布流程以 Firefox 100.0.2 GeckoDriver 0.37.1 镜像日志为例 本指南测试后端云原生容器编排可观测性上一篇游戏MOD贴图异常问题从诊断到优化的完整解决方案下一篇终极网盘直链下载助手八大平台高速下载完全指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表