
测试后端云原生容器编排可观测性【免费下载链接】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 仓库中 Edge 123 版本的发布日志CHANGELOG/archived/4.29.0/edge_123.md为切入点完整解读该项目的浏览器镜像标签生成与发布机制。你将掌握tag_and_push_browser_images.sh脚本的每个参数含义、8 类镜像标签的命名规范、Edge 镜像的构建原理浏览器与 EdgeDriver 的版本配对、启动包装器、残留进程清理以及如何在 Selenium Grid 部署中准确选用 Edge 镜像标签。一、发布日志还原一次 Edge 123 镜像发布发生了什么edge_123.md记录的是 Selenium Grid 4.29.0 版本发布时Edge 浏览器镜像被打标签并推送的完整命令输出。还原其执行现场./tag_and_push_browser_images.sh 4.29.0 20250303 selenium false edge true Tagging images for browser edge, version 4.29.0, build date 20250303, namespace selenium Selenium Grid version - 4.29.0-20250303 Edge version - 123.0.2420.97 Short Edge version - 123.0 EdgeDriver version - 123.0.2420.97 Short EdgeDriver version - 123.0日志揭示的关键信息Selenium Grid 版本4.29.0-20250303即版本号 4.29.0 与构建日期 20250303 的组合用于区分不同日期的发布构建Edge 浏览器版本123.0.2420.97短版本123.0EdgeDriver 版本123.0.2420.97与 Edge 浏览器版本完全一致Edge 的 msedgedriver 与浏览器严格同步发布这是与 ChromeDriver 略有不同的生态特征镜像命名空间selenium即 Docker Hub 上的selenium/*系列镜像。日志后半部分列出了 12 行Tagged输出覆盖node-edge与standalone-edge两类镜像共 12 个标签。要理解这些标签的生成规则需要深入阅读仓库根目录下的核心发布脚本 tag_and_push_browser_images.sh。二、发布脚本参数逐项拆解脚本第一行接收 7 个位置参数见 tag_and_push_browser_images.sh参数默认值含义$1VERSION无Selenium Grid 发布版本号如4.29.0$2BUILD_DATE无构建日期如20250303与版本号组成完整 tag4.29.0-20250303$3NAMESPACE无镜像仓库命名空间发布时为selenium$4PUSH_IMAGEfalse打标签后是否执行docker push推送到远端仓库$5BROWSER无浏览器类型支持chrome、chromium、edge、firefox、chrome-for-testing$6RELEASE_OLD_VERSIONfalse是否为旧版本补发标签为true时跳过“无日期”的短标签避免污染最新版本标签$7PLATFORMlinux/amd64构建平台chrome、chrome-for-testing分支使用--platform运行探针容器对应edge_123.md中命令./tag_and_push_browser_images.sh 4.29.0 20250303 selenium false edge true4.29.0→ VERSION20250303→ BUILD_DATEselenium→ NAMESPACEfalse→ PUSH_IMAGE本次仅打标签未推送或推送由 CI 后续步骤处理edge→ BROWSERtrue→ RELEASE_OLD_VERSION这是旧版本 4.29.0 的补发/归档标签操作因此仅生成带日期的标签三、Edge 标签命名规范8 4 类标签的完整清单脚本的edge)分支tag_and_push_browser_images.sh先生成长版本号对应的标签数组再通过short_version函数L53-L57将123.0.2420.97截断为123.0生成短版本号标签。3.1 带日期的 8 个基础标签始终生成对每个标签同时作用于node-edge与standalone-edge两个镜像因此日志中每次出现成对的Tagged类别标签格式以本日志为例适用场景长版本完整标签123.0.2420.97-edgedriver-123.0.2420.97-grid-4.29.0-20250303精确锁定浏览器、驱动与 Grid 版本的组合用于可复现的 CI 构建长版本 构建日期123.0.2420.97-edgedriver-123.0.2420.97-20250303同一天内修复重建时区分新旧镜像长版本 构建日期仅浏览器123.0.2420.97-20250303只关心浏览器版本与构建日期短版本完整标签123.0-edgedriver-123.0-grid-4.29.0-20250303语义化版本便于人工识别的完整组合短版本 构建日期123.0-edgedriver-123.0-20250303短版本下的日期化标签短版本 构建日期仅浏览器123.0-20250303最短语义化标签3.2 无日期的 4 个浮动标签RELEASE_OLD_VERSIONfalse 时追加当RELEASE_OLD_VERSION为false即常规最新版本发布时脚本还会追加以下标签123.0.2420.97-edgedriver-123.0.2420.97123.0.2420.97123.0-edgedriver-123.0123.0这些无日期标签作为“浮动指针”随每次新版本发布移动到最新版本日常使用selenium/node-edge:123.0即可获得该主版本最新构建。注意edge_123.md作为归档日志属于 4.29.0 旧版本的补发记录RELEASE_OLD_VERSIONtrue因此只出现 6 类带日期标签未见无日期标签——这正是if [ ${RELEASE_OLD_VERSION} false ]条件分支的直接体现。四、版本探测原理容器内执行二进制获取真实版本脚本并非从配置文件中读取版本号而是直接运行已构建的镜像执行浏览器二进制来获取真实版本tag_and_push_browser_images.shEDGE_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 123.0.2420.97取第 3 个字段得到版本号msedgedriver --version输出如Microsoft Edge WebDriver 123.0.2420.97 (…commit…)取第 4 个字段得到 EdgeDriver 版本这种“镜像自证”方式保证标签上的版本号与容器内真实二进制绝对一致杜绝人工填写版本号导致标签与实际内容不符。short_version函数使用 bash 字符串切分取前两个点号分隔段function short_version() { local __long_version$1 local __version_split(${__long_version//./ }) echo ${__version_split[0]}.${__version_split[1]} }五、Edge 镜像构建原理NodeEdge/Dockerfile 逐层解读理解标签背后需要知道 Edge 镜像本身是如何构建的。核心构建逻辑位于 NodeEdge/Dockerfile以node-base为基础镜像。5.1 浏览器安装稳定版仓库 版本归档兜底Dockerfile 第 16-34 行 展示了 Edge 安装策略ARG EDGE_VERSIONmicrosoft-edge-stable ARG EDGE_ARCHIVE_SITEhttps://github.com/NDViet/microsoft-edge-stable/releases/download RUN wget -q -O - https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | tee /etc/apt/trusted.gpg.d/microsoft.gpg /dev/null \ echo deb https://packages.microsoft.com/repos/edge stable main /etc/apt/sources.list.d/microsoft-edge.list \ apt-get update -qqy \ if echo ${EDGE_VERSION} | grep -qE microsoft-edge-stable[_|][0-9]*; \ then ... wget -qO microsoft-edge.deb ${EDGE_ARCHIVE_SITE}/${EDGE_VERSION_NUMBER}/${EDGE_VERSION}_$(dpkg --print-architecture).deb ... ; \ else apt-get -qqy --no-install-recommends install ${EDGE_VERSION} ; \ fi默认安装microsoft-edge-stable通过微软 APT 源由于微软会清理 packages.microsoft.com 上的旧版本构建指定历史版本时改为从 NDViet/microsoft-edge-stable 的按版本归档下载.deb包安装与 Google Chrome 的归档方案同思路--allow-downgrades允许在已存在更高版本时降级安装。5.2 EdgeDriver 安装LATEST_RELEASE 指针 版本回退Dockerfile 第 51-68 行 解析 EdgeDriver未显式指定EDGE_DRIVER_VERSION时先读取microsoft-edge --version提取主版本号向https://msedgedriver.microsoft.com/LATEST_RELEASE_主版本_LINUX查询该主版本对应的最新驱动若该指针已被微软清理旧版本常见则回退直接用浏览器完整版本号作为驱动版本下载下载失败时再次回退到${EDGE_ARCHIVE_SITE}/${EDGE_DRIVER_VERSION}-1/edgedriver_${DRIVER_ARCH}.zip归档地址驱动被安装到/opt/selenium/msedgedriver-版本并通过符号链接暴露为/usr/bin/msedgedriver。5.3 启动包装器--no-sandbox 与自定义参数注入Dockerfile 第 39-40 行 将 wrap_edge_binary 复制进容器并执行。该脚本将真正的 Edge 二进制改名为microsoft-edge-base生成包装脚本实现自动附加--no-sandbox容器内以非 root 运行浏览器所必需收集环境变量中所有SE_BROWSER_ARGS_前缀的变量值合并为额外启动参数解析--lang参数转换为LANGUAGE环境变量Debian 系不尊重--lang命令行选项。5.4 浏览器信息清单Dockerfile 第 82-85 行 将浏览器名称、版本和 ms:edgeOptions 的二进制位置写入/opt/selenium/browsers/edge/供 Selenium Grid 节点动态生成 stereotype 配置使用。5.5 残留进程与临时文件清理镜像内置 edge-cleanup.sh 常驻清理进程通过 supervisord 配置 edge-cleanup.conf 以 priority20 启动在 xvfb/fluxbox、x11vnc、noVNC、selenium-node 之后。清理逻辑按SE_BROWSER_LEFTOVERS_PROCESSES_SECS默认 7200 秒杀掉运行超时的 msedge 进程按SE_BROWSER_LEFTOVERS_TEMPFILES_DAYS默认 1 天清理/tmp/.com.microsoft.Edge.*临时目录按SE_BROWSER_LEFTOVERS_INTERVAL_SECS默认 3600 秒循环执行由SE_ENABLE_BROWSER_LEFTOVERS_CLEANUP默认 false控制开关详见 ENV_VARIABLES.md。六、retag 机制与多架构镜像发布retag函数tag_and_push_browser_images.sh负责为已构建镜像追加标签并支持两条发布路径常规路径docker tag本地打标签PUSH_IMAGEtrue时执行docker pushPROMOTE_TAGS 路径当 CI 直接提升promote已测试通过的镜像而非重新构建时本地 Docker 存储中没有镜像docker tag无法工作此时改用docker buildx imagetools create在 registry 间直接操作 manifest index保证浏览器标签保持多架构属性若设置了PROMOTE_GHCR_NAMESPACE则在同一次调用中同时镜像到 GHCR。这一机制由PROMOTE_TAGS默认 false和PROMOTE_GHCR_NAMESPACE两个环境变量驱动注释中说明了设计缘由。七、平台限制与实践选用建议7.1 Edge 镜像仅限 AMD64仓库 README 的浏览器多架构矩阵README.md明确标注Edge 在 x86_64 上 ✅、aarch64 上 ❌原因写在 README.md 第 170 行微软不构建 Linux/ARM 平台的 Edge 浏览器因此node-edge与standalone-edge镜像只有 AMD64 版本。在 ARM如 Apple M 系列、树莓派环境下应改用 Chrome 或 Chromium 镜像。7.2 实践中如何选用标签根据发布日志生成的标签体系实际部署时可按需选择# 精确复现发布构建浏览器 驱动 Grid 全版本锁定 docker run -d -p 4444:4444 --shm-size2g \ selenium/standalone-edge:123.0.2420.97-edgedriver-123.0.2420.97-grid-4.29.0-20250303 # 语义化主版本跟随 Edge 123.x 的最新构建 docker run -d -p 4444:4444 --shm-size2g selenium/node-edge:123.0 # 与当前 Grid 版本匹配的 Edge 节点 docker run -d -p 4444:4444 --shm-size2g selenium/node-edge:4.29.0-20250303在 Selenium Grid 的docker-compose或 Kubernetes 编排中引用node-edge时建议优先使用4.29.0-20250303这类 Grid 版本标签确保节点与 Hub 组件版本一致。7.3 在 Grid 中通过浏览器名称使用 EdgeSelenium 客户端发起会话时使用browserName: MicrosoftEdge定位 Edge 节点README.md这是 docker-selenium 镜像约定的 Edge 浏览器名称与/opt/selenium/browsers/edge/name文件内容一致。同节点多浏览器场景下可用SE_NODE_ENABLE_BROWSER_EDGEfalse关闭 Edge stereotypeENV_VARIABLES.md。八、从日志到机制理解 docker-selenium 发布流水线综合以上分析edge_123.md这则看似简单的日志实际上是 docker-selenium 完整发布流水线在 Edge 浏览器维度上的浓缩记录构建基于 NodeEdge/Dockerfile 构建包含指定版本 Edge 与 msedgedriver 的node-edge镜像并在此基础上衍生standalone-edge自证版本docker run容器内执行microsoft-edge --version与msedgedriver --version探测真实版本生成标签按长/短版本 × 完整/日期/浮动共 10 种格式组合标签同时作用于 node 与 standalone 镜像发布retag打标签并按需docker push或通过buildx imagetools提升已测试镜像保持多架构。同类日志如 firefox_98.md、chrome_123.md展示了该机制对 Firefoxgeckodriver 版本独立于浏览器、Chrome 等浏览器的同样适用性差异仅在于版本探测命令与驱动命名geckodriver、chromedriver、msedgedriver。结语本文以 Edge 123 发布日志为线索完整还原了 docker-selenium 浏览器镜像的标签生成、版本探测与发布机制。核心结论镜像标签承载“浏览器版本 驱动版本 Grid 版本 构建日期”的多维信息通过容器自证版本保证标签可信通过短/长版本与日期/浮动标签的矩阵满足从精确复现到语义化跟踪的各类使用需求。在 ARM 平台或需要多浏览器矩阵时可结合仓库 README 中的 多架构支持说明 与 ENV_VARIABLES.md 进一步规划部署方案。赞分享测试后端云原生容器编排可观测性【免费下载链接】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 浏览器镜像标签生成与发布机制解读以 Edge 115 为例docker selenium 浏览器镜像标签生成与发布机制解读以 Edge 115 为例 本文基于 docker selenium 仓库中 Selenium测试后端云原生容器编排可观测性docker-selenium 浏览器镜像标签发布机制全解析以 Chrome 123 版本标签为例docker selenium 浏览器镜像标签发布机制全解析以 Chrome 123 版本标签为例 本篇技术指南以 CHANGELOG/archived/4.测试后端云原生容器编排可观测性《Go语言高级编程》第一章开篇Go 语言创世纪——从贝尔实验室基因到 21 世纪的 C 语言《Go语言高级编程》第一章开篇Go 语言创世纪——从贝尔实验室基因到 21 世纪的 C 语言 Go 语言由 Google 的 Robert Griesemer测试后端云原生容器编排可观测性上一篇radix-vue ToastPortal 组件指南Props 详解、Teleport 原理与自定义挂载目标实战下一篇ESP-IDF 跟踪系统ESP Trace完全指南架构、传输与 SystemView/Gcov/函数跟踪实战创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考