通过 Docker Selenium 实现多架构镜像

这篇博客文章宣布了官方 Selenium Docker Hub 注册表上 Selenium Grid Server 的多架构镜像的可用性。

我们很高兴地宣布 Selenium Grid Server 的多架构镜像已登陆 Selenium Docker Hub 注册表!

动机

对于能够在 Apple M 系列或 Raspberry Pi 等平台上运行的实验性 Docker 容器镜像,位于 SeleniumHQ-Community/docker-seleniarm 的社区驱动的存储库计划。这些镜像为单独的架构构建:linux/arm64 (aarch64)、linux/arm/v7 (armhf) 和 linux/amd64,并在 Seleniarm Docker Hub 注册表上发布。

为了提高人们对多架构 Docker 容器镜像的认识,提供有关容器镜像如何构建的更多见解和透明度,以及克服构建和维护它们的挑战。我们已决定将 fork 合并到主项目 Docker Selenium,并在 Selenium Docker Hub 注册表上发布多架构镜像。

概述

从镜像标签 releases 4.21.0 开始,Docker Selenium 支持的架构如下

架构操作系统可用性
x86_64 (又名 amd64)Ubuntu LTS
aarch64 (又名 arm64/armv8)Ubuntu LTS
armhf (又名 arm32/armv7l)不适用

根据主机架构,Docker 将自动拉取适合平台的正确镜像。

浏览器二进制文件

让我们花点时间看看可用于各种架构的浏览器二进制文件

Google 不会为 Linux/ARM 平台构建 Chrome (google-chrome)。因此,Chrome(节点和独立)镜像仅适用于 AMD64。同样,Microsoft 不会为 Linux/ARM 平台构建 Edge (microsoft-edge)。

相反,开源 Chromium 浏览器将代替 Chrome 和 Edge。standalone-chromiumnode-chromium

$ docker run --rm -it -p 4444:4444 -p 5900:5900 -p 7900:7900 --shm-size 2g selenium/standalone-chromium:latest

Mozilla Firefox 现在可以通过 Nightly 通道用于 Linux/ARM64。ARM64 镜像中的 Firefox 版本将与 AMD64 版本不同,直到稳定版本可用。

镜像名称操作系统amd64arm64
standalone-chromiumUbuntu LTS
node-chromiumUbuntu LTS
standalone-firefoxUbuntu LTS
node-firefoxUbuntu LTS
standalone-edgeUbuntu LTS
node-edgeUbuntu LTS
standalone-chromeUbuntu LTS
node-chromeUbuntu LTS

构建、测试和分发多架构镜像

我们还想分享为确保多架构镜像能够无缝构建、测试和分发所做的工作。

  • 利用 Bash 脚本和 Makefile 尽可能地包装任务。它提供了有关容器镜像如何构建并通过单个命令进行操作的透明度。

  • 利用 CircleCI 上的 Arm VM 支持来构建、测试和部署 ARM64 镜像。一旦 GitHub Actions 正式支持基于 Arm 的托管运行器,这些工作流就可以轻松地移回同一位置。为 AMD64 镜像(包括 Docker、Docker Compose 和部署到 Kubernetes)完成的所有测试都用于验证 ARM64 镜像。

  • 利用 Docker Engine 中的实验性功能 containerd 镜像存储,以简单的方式构建和分发多架构镜像。

希望这将使社区能够轻松找到和使用多架构镜像,从而简化 Selenium Grid Server 在各种平台上的部署。


请关注 SeleniumHQ 在 X (以前的 Twitter)LinkedIn 上的更新!

测试愉快!

上次修改时间:2024 年 8 月 22 日:为博客文章添加图像。(6a3ffb70b69)