最近使用M1时发现构建的镜像与云服务的架构不符导致云服务器的镜像跑不起来,最好的解决方案是使用buildx一次性构建多平台镜像。
构建Buildx
docker buildx create --use --name arm_builder
构建完成后可以查看是否构建成功
docker buildx inspect --bootstrap
Name: arm_builder
Driver: docker-container
Nodes:
Name: arm_builder0
Endpoint: unix:///var/run/docker.sock
Status: running
Platforms: linux/arm64, linux/amd64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
构建不同平台的镜像
docker buildx build --platform linux/amd64,linux/arm64 --push -t <image> .
platform表示要构建什么平台的镜像,最后push直接到docker hub上,当docker pull拉取镜像时会直接根据平台来自动选择镜像。