如何确认docker buildx中是否支持我想要的 CPU架构

49 阅读1分钟

这段时间因为需要跨cpu架构build docker镜像,接触到一个新东西 docker buildx,关于它是什么另外会记录一篇文章,这里先记录下如何查看docker buildx支持哪些cpu架构。

用下面 1 条命令就能列出 buildx 实例里到底有哪些平台

docker buildx ls

典型输出(截断):

NAME/NODE    DRIVER/ENDPOINT             STATUS   PLATFORMS
cross *      docker-container            
  cross0     unix:///var/run/docker.sock running  linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6

只要看到 linux/arm64(或 linux/arm64/v8)出现在 PLATFORMS 列,就说明 QEMU 已注册buildx 已就绪,可以 docker buildx build --platform linux/arm64 ... 直接编译。


如果列表里 没有 linux/arm64

  1. 先装 QEMU 并注册
    docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
    
  2. 重新创建 / 重启构建器
    docker buildx rm cross   # 如有旧实例
    docker buildx create --name cross --driver docker-container --use
    docker buildx inspect --bootstrap
    
  3. docker buildx ls 确认 linux/arm64 已出现。

一行命令快速判断(脚本友好)

docker buildx ls | grep -q linux/arm64 && echo "ok" || echo "missing arm64"

总结

docker buildx lsPLATFORMS 列;
linux/arm64 就能编;没有就执行 qemu-user-static --reset -p yes + 重新 create 即可。