Docker 构建多架构镜像并推送仓库
前言
原本多架构其实我还遇到的不算多,但自从苹果的 M1 出来之后 arm64 版本支持就变成了一个常态,所以会常遇到需要多架构镜像都构建的情况。以前的 docker 版本需要你去编写 manifest
很麻烦,而今天就说说如何使用 docker buildx
来同时构建多架构的镜像,其实现在已经非常方便了。
目标:构建出 amd64 和 arm64 的 docker 镜像
创建 builder
默认你在 docker build
的时候直接指定 --platform linux/arm64,linux/amd64
就会报错,告诉你需要使用 docker buildx
而前提是你需要有一个 builder
1 | $ docker buildx create --name mybuilder --driver docker-container |
Linux 非 arm 下可能需要你先安装 https://github.com/tonistiigi/binfmt#installing-emulators 以支持 arm 平台的打包
构建
其实到这里已经非常简单的,就和原来的构建命令差不多,只是需要指定对应构建的架构即可
1 | docker buildx build --platform linux/amd64,linux/arm64 -t linkinstar/app:latest . |
当然,如何想要将构建完成的镜像直接 push 到镜像仓库,也可以追加参数 --push
1 | docker buildx build --platform linux/amd64,linux/arm64 -t linkinstar/app:latest . --push |
可能存在的问题
由于国内网络环境的问题,可以尝试使用 https://github.com/docker-practice/buildx 实际中我使用时发现和官方的还是有区别,所以竟可能还是用官方的 builder,实在不行可以考虑更换
1 | # 添加了镜像设置,建议在国内环境使用 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 星星world!
评论