☰
docker-selenium 4.32.0 的 Edge 116 镜像发布全解:从版本探测到 20 个镜像标签的完整链路
2026/10/8 19:29:16 网站建设 项目流程
  • 测试
  • 后端
  • 云原生
  • 容器编排
  • 可观测性

【免费下载链接】docker-selenium

Provides 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 仓库中 Edge 116 的发布记录(CHANGELOG/archived/4.32.0/edge_116.md)为核心,逐层拆解浏览器镜像从版本探测、标签生成到推送的完整发布流程。读完你将掌握tag_and_push_browser_images.sh的全部参数语义、6 大标签类别的命名规则、node-edge与standalone-edge镜像的构建链路,以及如何根据测试需求精确挑选镜像标签。

一、发布记录原文:Edge 116 的一次标准发布

4.32.0 版本中,Edge 116 镜像的发布过程记录如下(原文完整保留):

./tag_and_push_browser_images.sh 4.32.0 20250515 selenium false edge true Tagging images for browser edge, version 4.32.0, build date 20250515, namespace selenium Selenium Grid version -> 4.32.0-20250515 Edge version -> 116.0.1938.81 Short Edge version -> 116.0 EdgeDriver version -> 116.0.1938.81 Short EdgeDriver version -> 116.0 Tagged selenium/node-edge:116.0.1938.81-edgedriver-116.0.1938.81-grid-4.32.0-20250515 Tagged selenium/standalone-edge:116.0.1938.81-edgedriver-116.0.1938.81-grid-4.32.0-20250515 Tagged selenium/node-edge:116.0.1938.81-edgedriver-116.0.1938.81-20250515 Tagged selenium/standalone-edge:116.0.1938.81-edgedriver-116.0.1938.81-20250515 Tagged selenium/node-edge:116.0.1938.81-20250515 Tagged selenium/standalone-edge:116.0.1938.81-20250515 Tagged selenium/node-edge:116.0-edgedriver-116.0-grid-4.32.0-20250515 Tagged selenium/standalone-edge:116.0-edgedriver-116.0-grid-4.32.0-20250515 Tagged selenium/node-edge:116.0-edgedriver-116.0-20250515 Tagged selenium/standalone-edge:116.0-edgedriver-116.0-20250515 Tagged selenium/node-edge:116.0-20250515 Tagged selenium/standalone-edge:116.0-20250515

这份记录看似只是一段终端输出,实际浓缩了 docker-selenium 浏览器镜像发布的完整自动化流程。其执行入口是仓库根目录下的 tag_and_push_browser_images.sh,而每次发布生成的 changelog 文件(形如edge_116.md)会通过 CHANGELOG/generate-matrix-readme.py 被汇总进 CHANGELOG/README.md 的浏览器版本矩阵,作为用户挑选镜像标签的依据。

二、命令逐参数解析:7 个位置参数的含义

脚本的调用签名为(见 tag_and_push_browser_images.sh):

./tag_and_push_browser_images.sh VERSION BUILD_DATE NAMESPACE PUSH_IMAGE BROWSER RELEASE_OLD_VERSION PLATFORM
位置参数本次调用值作用
$1 VERSION4.32.0Selenium Grid 版本号,与BUILD_DATE拼成完整镜像版本4.32.0-20250515
$2 BUILD_DATE20250515构建日期(YYYYMMDD),是镜像标签中"日期戳"的来源
$3 NAMESPACEselenium镜像命名空间,决定最终 tag 前缀(如selenium/node-edge)
$4 PUSH_IMAGEfalse是否在打标签后执行docker push;false表示本次仅打标签
$5 BROWSERedge目标浏览器,支持chrome、chromium、edge、firefox、chrome-for-testing
$6 RELEASE_OLD_VERSIONtrue是否为旧版本补打精简标签(决定是否追加短标签组,详见第四节)
$7 PLATFORM默认目标平台,默认linux/amd64,仅 chrome 分支使用

脚本内部还会读取两个环境变量:PROMOTE_TAGS(默认false)与PROMOTE_GHCR_NAMESPACE(默认空),用于"发布时推广已测试镜像"的场景(详见第五节)。

三、Edge 与 EdgeDriver 版本探测:从容器内"问"出来的版本号

脚本并不假设镜像内的版本,而是直接运行已构建好的node-edge:4.32.0-20250515镜像来探测真实版本(tag_and_push_browser_images.sh):

EDGE_VERSION=$(docker run --rm ${NAMESPACE}/node-edge:${TAG_VERSION} microsoft-edge --version | awk '{print $3}') EDGE_SHORT_VERSION="$(short_version ${EDGE_VERSION})" EDGEDRIVER_VERSION=$(docker run --rm ${NAMESPACE}/node-edge:${TAG_VERSION} msedgedriver --version | awk '{print $4}') EDGEDRIVER_SHORT_VERSION="$(short_version ${EDGEDRIVER_VERSION})"
  • microsoft-edge --version输出的形如Microsoft Edge 116.0.1938.81,awk '{print $3}'取出第 3 列即116.0.1938.81;
  • msedgedriver --version输出格式不同,版本号位于第 4 列,因此用awk '{print $4}';
  • short_version()函数(tag_and_push_browser_images.sh)按.分割版本号并只保留前两段,得到116.0,作为"短版本"标签的来源。

本次记录中 Edge 与 EdgeDriver 版本完全一致(均为116.0.1938.81),这是因为 Edge 116 的 msedgedriver 与浏览器保持同步发布。探测结果会以Selenium Grid version ->、Edge version ->、Short Edge version ->等行打印出来,构成 changelog 记录的上半部分。

四、标签生成规则:6 + 4 组标签、node 与 standalone 双镜像

4.1 六组基础标签(始终生成)

脚本在 tag_and_push_browser_images.sh 中先构造 6 组标签,覆盖"完整版本 + 短版本 × 三种命名维度"的组合:

维度完整版本(如116.0.1938.81)短版本(如116.0)
浏览器 + 驱动 + Grid 完整标签{edge}-edgedriver-{driver}-grid-{gridVersion}-{buildDate}{edgeShort}-edgedriver-{driverShort}-grid-{gridVersion}-{buildDate}
浏览器 + 驱动 + 构建日期{edge}-edgedriver-{driver}-{buildDate}{edgeShort}-edgedriver-{driverShort}-{buildDate}
浏览器 + 构建日期{edge}-{buildDate}{edgeShort}-{buildDate}

4.2 四组精简标签(旧版本补发时追加)

当RELEASE_OLD_VERSION=false时(即发布"当前"版本,本次记录中第 6 个参数为true表示 Edge 116 属于旧版本补发),脚本会追加 4 组不带日期、更易记忆的标签(tag_and_push_browser_images.sh):

标签示例
浏览器完整版 + 驱动完整版116.0.1938.81-edgedriver-116.0.1938.81
浏览器完整版116.0.1938.81
浏览器短版 + 驱动短版116.0-edgedriver-116.0
浏览器短版116.0

由于本次是旧版本(RELEASE_OLD_VERSION=true),故 changelog 中只出现 6 组标签;对比 CHANGELOG/archived/4.32.0/chrome_134.md(参数为chrome ... false)可以看到完整 10 组标签的输出形态。

4.3 双镜像打标签

每组标签都会同时打在node-edge与standalone-edge两个镜像上(tag_and_push_browser_images.sh):

for edge_tag in "${EDGE_TAGS[@]}"; do retag node-edge "${edge_tag}" retag standalone-edge "${edge_tag}" done

这正是 changelog 中"Tagged"行成对出现(node-edge与standalone-edge各 10 行、共 20 行)的原因。

五、retag 底层实现:docker tag 与 buildx imagetools 双路径

retag()函数(tag_and_push_browser_images.sh)负责把"带完整版本号的基础标签"复制为各精简标签:

  • 默认路径(PROMOTE_TAGS=false):执行docker tag "${NAMESPACE}/${__image}:${TAG_VERSION}" "${NAMESPACE}/${__image}:${__tag}",本地镜像仓库内新增一个标签别名;若PUSH_IMAGE=true则随后执行docker push。
  • 推广路径(PROMOTE_TAGS=true):不依赖本地镜像,改用docker buildx imagetools create --tag ...在 registry 之间直接操作 manifest index。脚本注释明确解释了原因:发布时推广的是"已经过测试的 manifest",本地docker pull只能取回当前 runner 架构的单架构镜像,若用docker tag会导致浏览器标签变成单架构,而imagetools作用于 index 层面、registry 到 registry 复制,可保住多架构属性;同时PROMOTE_GHCR_NAMESPACE允许在同一次调用中镜像到 GHCR。

六、镜像构建链路:Edge 116 从何而来

打标签之前,镜像本身由 Makefile 的edge目标构建,其依赖链为node_base -> video -> base,最终在 NodeEdge/Dockerfile 中完成 Edge 的装配:

edge: node_base edge_only edge_only: cd ./NodeEdge && docker buildx build --platform linux/amd64 ... -t $(NAME)/node-edge:$(TAG_VERSION) .

注意edge_only目标对平台有硬性限制:Microsoft Edge 仅支持 linux/amd64(Makefile),这与 Chrome for Testing 相同,因此在 arm64 runner 上会跳过 Edge 构建。

NodeEdge/Dockerfile 的关键步骤:

  1. Edge 浏览器安装:默认EDGE_VERSION="microsoft-edge-stable"从 Microsoft 官方源安装;由于 Microsoft 会清理旧版本包,脚本支持通过EDGE_ARCHIVE_SITE(NDViet/microsoft-edge-stable 归档仓库)下载指定版本的.deb并--allow-downgrades安装(Dockerfile 第 17-34 行),这是"锁定 116 这种旧版本"能够成立的前提。
  2. EdgeDriver 安装:优先通过https://msedgedriver.microsoft.com/LATEST_RELEASE_${EDGE_MAJOR}_LINUX探测驱动版本;若该指针已被清理,则回退到浏览器自身版本号,并从归档站点下载edgedriver_linux64.zip,解压后以msedgedriver-${VERSION}命名并软链到/usr/bin/msedgedriver(Dockerfile 第 52-68 行)。
  3. 浏览器元信息落盘:将MicrosoftEdge、版本号与ms:edgeOptions.binary写入/opt/selenium/browsers/edge/,供 Grid 自动发现与启动浏览器(Dockerfile 第 82-85 行)。
  4. 清理守护进程:NodeEdge/edge-cleanup.sh 由 supervisord 托管,按SE_BROWSER_LEFTOVERS_PROCESSES_SECS、SE_BROWSER_LEFTOVERS_TEMPFILES_DAYS、SE_BROWSER_LEFTOVERS_INTERVAL_SECS三个环境变量周期清理残留的 msedge 进程与/tmp/.com.microsoft.Edge.*临时目录。

standalone-edge则基于node-edge构建(Makefile 的standalone_edge_only,--build-arg BASE=node-edge),把 Node 与 Grid Server 打包进同一个容器,免去单独部署 Hub 的环节。

七、发布记录的价值:如何用这些标签

这份 changelog 与 docs/docker-hub/node-edge.md 共同构成用户的选型依据。node-edge 的标准运行方式(需与 Hub 同处一个 Docker 网络):

docker network create grid docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:latest docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub --shm-size="2g" selenium/node-edge:latest

官方文档建议对浏览器镜像使用--shm-size=2g以共享主机内存。选标签时遵循 docs/docker-hub/node-edge.md 归纳的结构:

selenium/node-edge-<Major>.<Minor>.<Patch>-<YYYYMMDD> selenium/node-edge-<browserVersion>-<browserDriver>-<browserDriverVersion>-<Major>.<Minor>.<Patch>-<YYYYMMDD>

推荐实践:

  • 需要同时锁定 Grid 与浏览器版本时,使用全量标签,如selenium/node-edge:116.0.1938.81-edgedriver-116.0.1938.81-grid-4.32.0-20250515;
  • 只关注浏览器版本时,使用selenium/node-edge:116.0;
  • 只想固定在某次构建产物时,使用带日期的selenium/node-edge:116.0.1938.81-20250515。

八、一致性验证:Edge 116 在不同 Grid 版本中的发布形态

Edge 116 同时也存在于 4.31.0 版本中(CHANGELOG/archived/4.31.0/edge_116.md),其浏览器与驱动版本同为116.0.1938.81,仅 Grid 版本与构建日期不同。这说明同一浏览器版本可以在多个 Grid 版本中重复发布,而镜像标签通过-grid-{版本}-{日期}段区分彼此——这正是 CHANGELOG/generate-matrix-readme.py 所描述的矩阵设计动机:让用户"用最新的 Selenium Grid 核心版本,同时仍能锁定某个浏览器版本"。矩阵 README 以✓链接指向各edge_116.md这类 changelog 明细,帮助用户快速定位特定 Grid 版本所支持的 Edge 版本组合。

提示:仓库不保证所有 Grid × 浏览器组合都经过完整测试(见矩阵 README 的免责声明),具体选型应由用户结合自身测试需求评估。

  • 测试
  • 后端
  • 云原生
  • 容器编排
  • 可观测性

【免费下载链接】docker-selenium

Provides 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
点击查看免费下载

相关推荐

上一篇:agentmemory 基准测试报告编写指南:基于 TEMPLATE.md 与 coding-agent-life-v1 实战解读
下一篇:Label Studio 安装与环境要求完全指南:系统需求、pip/Docker/源码部署与升级路径

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询