
测试后端云原生容器编排可观测性【免费下载链接】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.30.0 版本发布记录CHANGELOG/archived/4.30.0/edge_123.md完整还原该版本中selenium/node-edge与selenium/standalone-edge镜像的生成与打标签过程并结合仓库内的标签脚本tag_and_push_browser_images.sh、Edge 节点镜像 DockerfileNodeEdge/Dockerfile与节点文档docs/docker-hub/node-edge.md为你讲解 Edge 123 镜像的完整版本组成、10 个发布标签的含义、打标签命令的底层执行逻辑以及如何在测试中按标签精确拉取对应版本。读完本文你将能读懂 docker-selenium 任意版本发布的浏览器镜像标签并能正确选择、校验 Edge 相关镜像。一、发布记录全文Edge 123 镜像的标签输出CHANGELOG/archived/4.30.0/edge_123.md完整记录了 4.30.0 版本构建日期 20250323Edge 镜像的标签生成过程。该记录由发布脚本执行后输出逐行拆解如下./tag_and_push_browser_images.sh 4.30.0 20250323 selenium false edge true Tagging images for browser edge, version 4.30.0, build date 20250323, namespace selenium Selenium Grid version - 4.30.0-20250323 Edge version - 123.0.2420.97 Short Edge version - 123.0 EdgeDriver version - 123.0.2420.97 Short EdgeDriver version - 123.0 Tagged selenium/node-edge:123.0.2420.97-edgedriver-123.0.2420.97-grid-4.30.0-20250323 Tagged selenium/standalone-edge:123.0.2420.97-edgedriver-123.0.2420.97-grid-4.30.0-20250323 Tagged selenium/node-edge:123.0.2420.97-edgedriver-123.0.2420.97-20250323 Tagged selenium/standalone-edge:123.0.2420.97-edgedriver-123.0.2420.97-20250323 Tagged selenium/node-edge:123.0.2420.97-20250323 Tagged selenium/standalone-edge:123.0.2420.97-20250323 Tagged selenium/node-edge:123.0-edgedriver-123.0-grid-4.30.0-20250323 Tagged selenium/standalone-edge:123.0-edgedriver-123.0-grid-4.30.0-20250323 Tagged selenium/node-edge:123.0-edgedriver-123.0-20250323 Tagged selenium/standalone-edge:123.0-20250323 Tagged selenium/node-edge:123.0-20250323 Tagged selenium/standalone-edge:123.0-20250323命令的 6 个参数含义为参数值作用1. VERSION4.30.0Selenium Grid 版本号用于拼接4.30.0-20250323这种含构建日期的镜像版本2. BUILD_DATE20250323构建日期作为发布标签的时间维度3. NAMESPACEselenium镜像仓库命名空间最终镜像名为selenium/node-edge与selenium/standalone-edge4. PUSH_IMAGEfalse是否执行docker push归档记录中为false仅打本地标签5. BROWSERedge浏览器类型脚本按此分支处理 Edge 版本探测与标签生成6. RELEASE_OLD_VERSIONtrue是否为旧版本发布补标签true表示不生成无日期的简化标签详见下文该记录还输出 4 个关键版本事实Selenium Grid 4.30.0-20250323、Edge 123.0.2420.97、EdgeDriver 123.0.2420.97其中浏览器与驱动版本号完全一致这正是 Edge 与 EdgeDriver 同步发布的体现。二、解读这 10 个标签docker-selenium 浏览器镜像的标签体系发布记录中共输出 10 个标签且同一标签同时打在node-edge与standalone-edge两个镜像上。它们的语义可以分为 6 类1. 完整标识类浏览器 驱动 Grid 版本 日期selenium/node-edge:123.0.2420.97-edgedriver-123.0.2420.97-grid-4.30.0-20250323包含全部 4 个维度浏览器完整版本123.0.2420.97、EdgeDriver 完整版本123.0.2420.97、Grid 版本4.30.0、构建日期20250323。这是信息最全、最不可变的一个标签适合需要精确复现环境的 CI 流水线。2. 浏览器 驱动 日期类selenium/node-edge:123.0.2420.97-edgedriver-123.0.2420.97-20250323去掉 Grid 版本保留浏览器、驱动完整版本与构建日期。3. 浏览器 日期类selenium/node-edge:123.0.2420.97-20250323只保留浏览器完整版本与构建日期。4. 短版本 完整标识类selenium/node-edge:123.0-edgedriver-123.0-grid-4.30.0-20250323使用短版本123.0取主版本号的前两段即123.0便于阅读与记忆。5. 短版本 驱动 日期类selenium/node-edge:123.0-edgedriver-123.0-202503236. 短版本 日期类selenium/node-edge:123.0-20250323注意由于本次命令中RELEASE_OLD_VERSIONtrue脚本不会生成不带日期的简化标签如selenium/node-edge:123.0.2420.97、selenium/node-edge:123.0。这一点在tag_and_push_browser_images.sh中非常明确只有当RELEASE_OLD_VERSION为false时才会追加浏览器版本 驱动版本纯浏览器版本这类无日期标签。换言之4.30.0是一个旧版本回补标签的发布它只为历史版本补齐带日期的精确标签而不会覆盖最新版指向。docs/docker-hub/node-edge.md中给出了这套标签体系的通用结构总结selenium/node-edge-Major.Minor.Patch-YYYYMMDD selenium/node-edge-browserVersion-browserDriver-browserDriverVersion-Major.Minor.Patch-YYYYMMDD所有组合的排列都会被打出用户可按需选取最简可用的标签拉取镜像。三、标签生成背后的脚本逻辑从版本探测到 10 个标签发布记录只是脚本的输出结果。要真正理解这些标签从何而来需要阅读仓库根目录下的tag_and_push_browser_images.sh。3.1 脚本入口与参数解析脚本头部依次接收 7 个参数VERSION$1 BUILD_DATE$2 NAMESPACE$3 PUSH_IMAGE${4:-false} BROWSER$5 RELEASE_OLD_VERSION${6:-false} PLATFORM${7:-linux/amd64}其中PUSH_IMAGE与RELEASE_OLD_VERSION都有默认值falsePLATFORM默认linux/amd64。归档记录中第 4 个参数为false与默认值一致。此外脚本还支持两个环境变量PROMOTE_TAGS为true时使用docker buildx imagetools create直接跨仓库补标签主要用于 CI 中不重建、直接提升已测试镜像的场景与PROMOTE_GHCR_NAMESPACE同一次调用内同步镜像到 GHCR。3.2 版本探测docker run 读取容器内二进制版本进入edge分支后脚本通过临时运行已构建的node-edge镜像来探测浏览器与驱动版本EDGE_VERSION$(docker run --rm ${NAMESPACE}/node-edge:${TAG_VERSION} microsoft-edge --version | awk {print $3}) EDGEDRIVER_VERSION$(docker run --rm ${NAMESPACE}/node-edge:${TAG_VERSION} msedgedriver --version | awk {print $4})microsoft-edge --version的输出形如Microsoft Edge 123.0.2420.97取第 3 列得到123.0.2420.97msedgedriver --version输出中第 4 列才是版本号因此使用awk {print $4}短版本由short_version函数截取主版本前两段得到function short_version() { local __long_version$1 local __version_split(${__long_version//./ }) echo ${__version_split[0]}.${__version_split[1]} }即123.0.2420.97→123.0。这正是发布记录中Short Edge version - 123.0、Short EdgeDriver version - 123.0两行的来源。3.3 标签数组的构建脚本按固定顺序构建EDGE_TAGS数组顺序与归档记录完全一致先是带日期的 6 个标签完整/完整日期/浏览器日期/短完整/短完整日期/短浏览器日期随后在RELEASE_OLD_VERSIONfalse时追加 4 个不带日期的标签。最后遍历数组对node-edge与standalone-edge逐一打标签for edge_tag in ${EDGE_TAGS[]}; do retag node-edge ${edge_tag} retag standalone-edge ${edge_tag} doneretag函数执行docker tag并在PUSH_IMAGEtrue时追加docker push。这解释了为什么发布记录中每个标签都会成对出现node-edge与standalone-edge两行——它们是同一个标签数组作用于两个镜像的结果。3.4 与 Makefile 的联动仓库Makefile中定义了tag_and_push_browser_images目标其依赖分别调用 5 个浏览器子目标其中 Edge 对应tag_and_push_edge_images: ./tag_and_push_browser_images.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) $(PUSH_IMAGE) edge $(RELEASE_OLD_VERSION)也就是说归档记录中的这条命令就是通过 Makefile 目标调用或由发布流水线直接执行的。若需要同步镜像到 GHCR还有tag_and_push_browser_images_ghcr目标Makefile负责把本地已有标签通过docker buildx imagetools create复制到 GHCR 命名空间。四、Edge 123 镜像本身NodeEdge Dockerfile 的实现细节发布记录中的123.0.2420.97并非凭空而来它由NodeEdge/Dockerfile构建出的镜像决定。这份 Dockerfile 有 4 个与标签密切相关的要点4.1 Edge 浏览器的安装与版本固化ARG EDGE_VERSIONmicrosoft-edge-stable ARG EDGE_ARCHIVE_SITEhttps://github.com/NDViet/microsoft-edge-stable/releases/download默认安装 stable 渠道的 Edge由于微软会清理packages.microsoft.com上的旧版本因此当通过EDGE_VERSIONmicrosoft-edge-stable版本号指定具体版本时会从按版本归档的EDGE_ARCHIVE_SITE下载对应 deb 包--allow-downgrades允许降级安装从而保证旧版本可复现。这一点与发布记录为 4.30.0 这个旧版本回补 Edge 123 标签的操作相互印证。4.2 EdgeDriver 的安装与版本对齐ARG EDGE_DRIVER_VERSION若未显式指定驱动版本Dockerfile 会先按浏览器主版本查询微软的LATEST_RELEASE_major_LINUX指针若该指针已被清理返回为空则回退为直接使用浏览器自身的完整版本号作为驱动版本。正是这条回退逻辑使得 Edge 与 EdgeDriver 版本一致都是123.0.2420.97成为常态也解释了发布记录中两行版本号相同的原因。4.3 浏览器元信息输出RUN mkdir -p /opt/selenium/browsers/edge \ echo MicrosoftEdge /opt/selenium/browsers/edge/name \ microsoft-edge --version | awk {print $3} /opt/selenium/browsers/edge/version \ echo {ms:edgeOptions: {binary: ${SE_BROWSER_BINARY_LOCATION:-/usr/bin/microsoft-edge}}} /opt/selenium/browsers/edge/binary_location构建时把浏览器名称、版本、binary 位置写入/opt/selenium/browsers/edge/供 Selenium Grid Node 在注册能力时上报使 Hub 能按browserNameMicrosoftEdge精确路由请求。4.4 与发布标签配套的环境变量ENV SE_OTEL_SERVICE_NAMEselenium-node-edge \ SE_NODE_ENABLE_MANAGED_DOWNLOADStrueSE_NODE_ENABLE_MANAGED_DOWNLOADS让 Node 自动管理会话产生的下载文件SE_OTEL_SERVICE_NAME用于 OpenTelemetry 的 service.name 标识对应 ENV_VARIABLES.md 中的记录。这些都与镜像的运行时行为相关不影响标签本身但属于 Edge 节点镜像的组成部分。五、拉取与使用 Edge 123 镜像的实操方案5.1 按标签精确拉取根据发布记录4.30.0 版本可用的 Edge 123 标签如下以node-edge为例standalone-edge同理# 信息最全浏览器驱动Grid日期 docker pull selenium/node-edge:123.0.2420.97-edgedriver-123.0.2420.97-grid-4.30.0-20250323 # 常用短版本标签 docker pull selenium/node-edge:123.0-20250323由于该发布是旧版本回补RELEASE_OLD_VERSIONtrue不存在selenium/node-edge:123.0、selenium/node-edge:123.0.2420.97这类不带日期的标签拉取时请使用上表中的带日期标签。5.2 运行 Node Hub 的标准组合docs/docker-hub/node-edge.md给出的标准运行方式如下将latest替换为上述精确标签即可锁定 4.30.0 Edge 123# 1. 创建网络 docker network create grid # 2. 启动 Hub docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:latest # 3. 启动 Edge Node务必指定 --shm-size docker run -d --net grid -e SE_EVENT_BUS_HOSTselenium-hub \ --shm-size2g \ selenium/node-edge:123.0-20250323 # 4. 将 WebDriver 测试指向 http://localhost:4444 # 5. 清理网络 docker network rm grid两点重要提醒浏览器类镜像运行务必加--shm-size2g否则浏览器可能因共享内存不足崩溃若想可视化观察容器内浏览器行为可访问http://localhost:7900/?autoconnect1resizescalepasswordsecretnoVNC。5.3 校验镜像内版本发布脚本用docker run --rm探测版本的方式同样可用于本地校验docker run --rm selenium/node-edge:123.0-20250323 microsoft-edge --version docker run --rm selenium/node-edge:123.0-20250323 msedgedriver --version应与发布记录中的123.0.2420.97一致。仓库Makefile中standalone-edge的校验步骤也是同样的思路。六、如何用环境变量控制 Edge 节点行为Edge 123 镜像配套的清理与参数化机制由NodeEdge/edge-cleanup.conf、NodeEdge/edge-cleanup.sh与NodeEdge/wrap_edge_binary实现残留进程与临时文件清理edge-cleanup.sh按SE_BROWSER_LEFTOVERS_PROCESSES_SECS默认 7200 秒杀掉存活的msedge进程并按SE_BROWSER_LEFTOVERS_TEMPFILES_DAYS默认 1 天清理/tmp下的.com.microsoft.Edge.*目录清理周期由SE_BROWSER_LEFTOVERS_INTERVAL_SECS默认 3600 秒控制见 ENV_VARIABLES.md。是否启用由SE_ENABLE_BROWSER_LEFTOVERS_CLEANUP决定supervisord 配置中通过autostart/autorestart关联该开关。浏览器启动包装器wrap_edge_binary在镜像构建时把/usr/bin/microsoft-edge替换为一段包装脚本它负责设置umask 002确保文件权限为 664把--langxx参数转换为LANGUAGE环境变量Debian/Ubuntu 不认--lang收集所有SE_BROWSER_ARGS_*前缀环境变量的值作为附加启动参数最终以--no-sandbox追加启动真实 Edge 二进制。因此在容器中通过-e SE_BROWSER_ARGS_xxx...即可向 Edge 传递任意启动参数。这些机制与标签体系相互独立标签解决拉哪个版本环境变量解决这个版本如何按需运行。七、小结CHANGELOG/archived/4.30.0/edge_123.md这份发布记录的核心价值有三版本事实4.30.020250323 构建对应的 Edge / EdgeDriver 均为123.0.2420.97短版本为123.0标签清单共 10 个标签同时作用于node-edge与standalone-edge覆盖完整版本 / 短版本 × 是否含 Grid 版本 × 是否含日期的组合流程还原RELEASE_OLD_VERSIONtrue说明这是一次旧版本回补脚本因此不生成无日期的简化标签。配合tag_and_push_browser_images.sh、NodeEdge/Dockerfile与docs/docker-hub/node-edge.md阅读你就能完整掌握 docker-selenium 浏览器镜像从构建、探测版本、打标签、推送到使用的全链路并在自己的 CI 或测试环境中精确锁定 Edge 123 Grid 4.30.0 的组合。赞分享测试后端云原生容器编排可观测性【免费下载链接】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点击查看免费下载相关推荐eslint-plugin-unicorn 规则剖析consistent-date-clone 的匹配逻辑、边界条件与自动修复机制eslint plugin unicorn 规则剖析consistent date clone 的匹配逻辑、边界条件与自动修复机制 本篇文章以 eslint测试后端云原生容器编排可观测性docker-selenium 4.48.0 发布记录Edge 137 镜像版本与标签体系全解析docker selenium 4.48.0 发布记录Edge 137 镜像版本与标签体系全解析 本篇技术指南以 docker selenium 仓库中 CH测试后端云原生容器编排可观测性Selenium docker-selenium 4.48.0Microsoft Edge 135 镜像发布记录与版本标签体系深度解析Selenium docker selenium 4.48.0Microsoft Edge 135 镜像发布记录与版本标签体系深度解析 本篇技术指南以 CHA测试后端云原生容器编排可观测性上一篇Kernelhub中的RottenPotato技术CVE-2016-3225漏洞的完整利用流程下一篇CANN/Ascend C SIMT整型乘法高位函数创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考