天之苍苍其正色邪
发布于
更新于
通过 buildx 构建支持多平台的 docker 镜像
天之苍苍,其正色邪?其远而无所至极邪?其视下也亦若是,则已矣。
首先查看本机的 buildx 的支持的平台
docker buildx ls
amd64 的机器,默认只支持 amd64 和 i386
NAME/NODE DRIVER/ENDPOINT STATUS PLATFORMS
default * docker
default default running linux/amd64, linux/386
运行一个镜像开启多平台的支持,文档 https://docs.docker.com/buildx/working-with-buildx/#linux-packages
docker run --privileged --rm tonistiigi/binfmt --install all
再看 docker buildx ls
的结果:
NAME/NODE DRIVER/ENDPOINT STATUS PLATFORMS
default * docker
default default running linux/amd64, linux/386, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/arm/v7, linux/arm/v6
然后需要自己创建一个 builder
docker buildx create --use --name mybuilder
docker buildx inspect mybuilder --bootstrap
再看 docker buildx ls
的结果,这里已经将 mybuilder 设置成了默认的 builder
NAME/NODE DRIVER/ENDPOINT STATUS PLATFORMS
mybuilder * docker-container
mybuilder0 unix:///var/run/docker.sock running linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
default docker
default default running linux/amd64, linux/386, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/arm/v7, linux/arm/v6
然后构建多平台的镜像
docker buildx build --platform linux/arm,linux/arm64,linux/amd64 -t project-test . --build-arg build_mode=dev --push
查看镜像的信息
docker buildx imagetools inspect project-test
Name: project-test:latest
MediaType: application/vnd.docker.distribution.manifest.list.v2+json
Digest: sha256:b61a0c16396d9736b009db69007cef344cc80c0b7b9f3cf76797209fed975434
Manifests:
Name: project-test:latest@sha256:e2ba1d0f700689338885973e0e24c3e990c1d6e26ed0e5fd8dc0722ea57e80dc
MediaType: application/vnd.docker.distribution.manifest.v2+json
Platform: linux/arm/v7
Name: project-test:latest@sha256:1c0671de50fd4fcf2ad320c3b8dba7de32c65829ec7f90494ff96031b10aef51
MediaType: application/vnd.docker.distribution.manifest.v2+json
Platform: linux/arm64
Name: project-test:latest@sha256:a09d9fe7334e832826127dfc0ccbef1beeb763be1820f71e6864f4af69991472
MediaType: application/vnd.docker.distribution.manifest.v2+json
Platform: linux/amd64
参考:http://dockeradv.baoshu.red/buildx/multi-arch-images.html