文章目录
来看看吧
新建Builder实例
Docker 默认的 builder 不支持同时指定多个架构,所以要新建一个:
1 | docker buildx create --use --name M1Pro_Builder |
查看并启动 Builder 实例:
1 | docker buildx inspect --bootstrap |
platforms就是代表支持的架构,跨平台构建的底层是用 QEMU 实现的。
准备构建多架构镜像
DOCKERFILE这里以Cerebro程序为例。Github地址:https://github.com/lmenezes/cerebro-docker/blob/master/Dockerfile
1 | # 编写Dockerfile |
1 | FROM openjdk:11.0.10-jre-slim |
使用 Buildx 构建:
1 | # 构建单架构amd64时 |
1 | # 构建多架构arm、amd64时 |
其中, -f
是需要进行构建的Dockerfile,--push
表示将构建好的镜像推送到 Docker 仓库,-t
参数指定远程仓库。如果不想直接推送,也可以改成 --load
,即将构建结果加载到镜像列表中,但加载到镜像列表时,便不支持多架构的构建方式。构建时将会报错:
1 | error: docker exporter does not currently support exporting manifest lists |
接着上面的构建参数,--platform
参数就是要构建的目标平台,这里我就选了本机的 arm64 和服务器用的 amd64。最后的 .(构建路径)注意不要忘了加。
构建完 push 上去以后,可以查看远程仓库的 manifest信息:
1 | docker buildx imagetools inspect registry.cn-hangzhou.aliyuncs.com/bohai_repo/cerebro-multi:latest|grep Platform |
如果如上图,同时返回多种架构,则构建成功。
本文完~