📜  docker buildx build --platform linux amd64,linux arm64 -t username application:latest --push . - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:40:48.799000             🧑  作者: Mango

利用 Docker Buildx 构建多架构镜像

Docker Buildx 是 Docker 官方开源的一个插件,通过 Buildx,我们可以轻松的构建多种不同架构的 Docker 镜像,从而满足不同终端设备的需求。

1. Buildx 的安装

在 Docker 19.03 版本以后,Buildx 已经默认集成在了 Docker Engine 中,可以通过以下命令检查其是否安装成功:

docker buildx version

如果能够正常输出版本号,则说明已经安装成功。

2. 构建多架构镜像

在使用 Buildx 构建 Docker 镜像的时候,需要在命令中指定多个目标平台,例如构建一份同时适用于 amd64 和 arm64 架构的镜像:

docker buildx build --platform linux/amd64,linux/arm64 -t username/application:latest --push .

这里的 --platform 参数用于指定要构建的目标平台。同时我们将镜像打上了 username/application:latest 的标签,并启用了 --push 选项将其推送到了 Docker Hub 等 Registry 中。

3. 在 Dockerfile 中指定多平台架构

除了在命令行中指定多个平台以外,在 Dockerfile 中也可以通过添加 FROM 指令来指定要构建的平台架构:

FROM --platform=${BUILDPLATFORM} ubuntu AS build-amd64
RUN apt-get update && apt-get install -y curl

FROM --platform=${BUILDPLATFORM} alpine AS build-arm64
RUN apk add --no-cache curl

这里我们向 Dockerfile 中添加了两个 FROM 指令,分别指定了 amd64 和 arm64 两种不同的平台,通过 --platform=${BUILDPLATFORM} 的方式获取当前选择的平台信息,从而只构建适用于当前平台的镜像。

4. 总结

Docker Buildx 是一个非常方便的工具,通过它我们可以轻松的构建多个不同平台架构的 Docker 镜像,并且可以在 Dockerfile 中自由的指定不同平台构建环境,从而满足不同终端设备的需求。