透過 Docker Selenium 實現多架構映像檔
分類
我們非常高興地宣布 Selenium Docker Hub 註冊中心現已提供 Selenium Grid Server 的多架構映像檔!
動機
對於能夠在 Apple M 系列或 Raspberry Pi 等平台上運行的實驗性 Docker 容器映像檔,社群驅動的儲存庫計畫託管於 SeleniumHQ-Community/docker-seleniarm。這些映像檔是為不同的架構而構建的:linux/arm64 (aarch64)、linux/arm/v7 (armhf) 和 linux/amd64,並發布在 Seleniarm Docker Hub 註冊中心。
為了提高對多架構 Docker 容器映像檔存在的認識,提供關於容器映像檔如何構建的更深入見解和透明度,並克服構建和維護它們的挑戰。我們已決定將分支合併到主專案 Docker Selenium 中,並在 Selenium Docker Hub 註冊中心發布多架構映像檔。
概述
從映像檔標籤 版本 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 的託管 runners,這些工作流程可以輕鬆地移回同一個地方。為 AMD64 映像檔(包括 Docker、Docker Compose 和部署到 Kubernetes)完成的所有測試都用於驗證 ARM64 映像檔。
利用 Docker Engine 中的實驗性功能 containerd 映像檔儲存來以簡單的方式構建和分發多架構映像檔。
希望這能讓社群更容易找到和使用多架構映像檔,以簡化在各種平台上部署 Selenium Grid Server 的過程。
請關注 SeleniumHQ 在 X (前身為 Twitter) 或 LinkedIn 上的帳號,以獲取最新消息!
測試愉快!




