$ docker buildx build
命令使用 BuildKit
构建镜像。该命令支持 --platform
参数可以同时构建支持多种系统架构的 Docker 镜像,大大简化了构建步骤。builder
实例arm
架构镜像,我们可以运行一个新的容器让其支持该特性,Docker 桌面版无需进行此项设置。builder
实例不支持同时指定多个 --platform
,我们必须首先创建一个新的 builder
实例。同时由于国内拉取镜像较缓慢,我们可以使用配置了 镜像加速地址 的 dockerpracticesig/buildkit:master
镜像替换官方镜像。如果你有私有的镜像加速器,可以基于 https://github.com/docker-practice/buildx 构建自己的 buildkit 镜像并使用它。
$ docker buildx build
命令构建镜像,注意将 myusername
替换为自己的 Docker Hub 用户名。--push
参数表示将构建好的镜像推送到 Docker 仓库。Dockerfile
支持如下架构相关的变量linux/amd64
, linux/arm/v7
, windows/amd64
。TARGETPLATFORM
的 OS 类型,例如 linux
, windows
TARGETPLATFORM
的架构类型,例如 amd64
, arm
TARGETPLATFORM
的变种,该变量可能为空,例如 v7
linux/amd64
BUILDPLATFORM
的 OS 类型,例如 linux
BUILDPLATFORM
的架构类型,例如 amd64
BUILDPLATFORM
的变种,该变量可能为空,例如 v7
linux/arm/v7
和 linux/amd64
两种架构的镜像。假设已经生成了两个平台对应的二进制文件:bin/dist-linux-arm
bin/dist-linux-amd64
Dockerfile
可以这样书写: