通过 Docker Selenium 实现多架构镜像
分类
我们很高兴地宣布 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-chromium
和 node-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 版本不同,直到稳定版本可用。
镜像名称 | 操作系统 | amd64 | arm64 |
---|---|---|---|
standalone-chromium | Ubuntu LTS | ✅ | ✅ |
node-chromium | Ubuntu LTS | ✅ | ✅ |
standalone-firefox | Ubuntu LTS | ✅ | ✅ |
node-firefox | Ubuntu LTS | ✅ | ✅ |
standalone-edge | Ubuntu LTS | ✅ | ❌ |
node-edge | Ubuntu LTS | ✅ | ❌ |
standalone-chrome | Ubuntu LTS | ✅ | ❌ |
node-chrome | Ubuntu 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 上的更新!
测试愉快!