问题描述
在 Apple Silicon Mac(以及其他 ARM64 设备)上执行:
docker pull fqscfqj/y2a-auto:latest
报错:
no matching manifest for linux/arm64/v8 in the manifest list entries
查看 Docker Hub 的 manifest,latest(及其他 tag)目前只包含 linux/amd64 一种架构。
已确认的情况
看了一下仓库里的 Dockerfile,其实 arm64 兼容性已经具备,只是 CI 没有发布多架构镜像:
ffmpeg-builder 阶段通过 TARGETARCH 明确处理了 arm64/aarch64 分支(BtbN 的 linuxarm64 构建、
johnvansickle 的 arm64-static 都有对应下载地址);
- 基础镜像
python:3.11-slim、debian:bookworm-slim 均为多架构镜像;
torch==2.6.0 / torchaudio==2.6.0 在 PyTorch 的 CPU index 上有 aarch64 轮子。
建议
在 GitHub Actions 构建流程中启用 buildx 多平台构建,例如:
- uses: docker/setup-qemu-action@v3
- uses: docker/setup-buildx-action@v3
- uses: docker/build-push-action@v6
with:
platforms: linux/amd64,linux/arm64
push: true
即可发布同时覆盖两种架构的 manifest list。
受益场景
- Apple Silicon Mac 本地部署(目前只能
--platform linux/amd64 走 Rosetta 转译,
ffmpeg 转码、ASR 等 CPU 密集环节性能损耗明显);
- ARM 云主机(AWS Graviton、Oracle Ampere 等);
- NAS / 树莓派等 ARM 设备。
问题描述
在 Apple Silicon Mac(以及其他 ARM64 设备)上执行:
报错:
查看 Docker Hub 的 manifest,
latest(及其他 tag)目前只包含linux/amd64一种架构。已确认的情况
看了一下仓库里的 Dockerfile,其实 arm64 兼容性已经具备,只是 CI 没有发布多架构镜像:
ffmpeg-builder阶段通过TARGETARCH明确处理了arm64/aarch64分支(BtbN 的linuxarm64构建、johnvansickle 的
arm64-static都有对应下载地址);python:3.11-slim、debian:bookworm-slim均为多架构镜像;torch==2.6.0/torchaudio==2.6.0在 PyTorch 的 CPU index 上有 aarch64 轮子。建议
在 GitHub Actions 构建流程中启用 buildx 多平台构建,例如:
即可发布同时覆盖两种架构的 manifest list。
受益场景
--platform linux/amd64走 Rosetta 转译,ffmpeg 转码、ASR 等 CPU 密集环节性能损耗明显);