生成自适应架构docker镜像
前期准备
首先在工作目录下准备好不同架构的文件以及Dockerfile,这里以bfban举例子
二进制文件:
bfban-linux-amd64
bfban-linux-arm
bfban-linux-arm64
Dockerfile文件内容
1 |
|
登录dockerhub以及编译进行推送
输入docker login
登录你的账号,确认登陆后执行以下命令:docker buildx build --platform linux/arm,linux/arm64,linux/amd64 -t 你的docker hub ID/你的镜像名字(不用加标签) . --push
执行以后应该会推送到 docker.io/你的ID/镜像名字
,且默认会生成xxx:latest
的标签
如果失败
默认情况下会自动拉取编译容器,如果编译失败可手动拉取,如下:
配置docker的实验功能
vim /etc/docker/config.json
添加内容
1 |
|
重启docker,systemctl daemon-reload
systemctl restart docker
运行docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
使用buildx 功能 新建 builder 实例
由于 Docker 默认的 builder
实例不支持同时指定多个 --platform
,我们必须首先创建一个新的 builder
实例。docker buildx create --name mybuilder --driver docker-container
使用新创建好的builder实例docker buildx use mybuilder
安装模拟器(用于多平台镜像构建)docker run --rm --privileged tonistiigi/binfmt:latest --install all
再次在工作目录下执行编译并推送docker buildx build --platform linux/arm,linux/arm64,linux/amd64 -t 你的docker hub ID/你的镜像名字(不用加标签) . --push