Docker Buildx构建多平台镜像的实现

一   环境需求

1.1 需要的环境

1.png

选择Ubuntu 和 Fedora 是因为它们的安装构建环境比较方便,不会出现内核版本低导致问题

1.2 BuildX的启用

启用 Buildx 方式(两种)

第一种

临时激活

把环境变量添加在执行构建命令的前面

第二种

配置文件激活

vim /etc/docker/daemon.json
{
"experimental": true
}

二  qemu-user-static

2.1 qemu-user-static的安装

qemu-user-stati依赖于binfmt-support,所以这两个都需要安装

sudo apt install -y qemu-user-static binfmt-support

2.2 qemu的使用

docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

2.3 Buildx构建容器的创建

docker buildx create --name mybuilder
docker buildx use mybuilder
docker buildx inspect --bootstrap

通过 docker ps 查看启动构建容器

root@hz:~# docker ps
root@hz:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ba6651e07ab0 moby/buildkit:buildx-stable-1 "buildkitd" 5 weeks ago Up 50 minutes buildx_buildkit_mybuilder0

2.4 调整Dockerfile接收平台相关参数

由buildx自动传递确保构建容器能拉取到正确平台的基础镜像

2FROM --platform=$TARGETPLATFORM 基础镜像名:TAG
.... 其他内容

2.5 构建X86_64与ARM64镜像直接推送到指定仓库

构建

docker buildx build -t 镜像仓库地址/镜像名:TAG --platform linux/amd64,linux/arm64 . --push

导出

docker buildx build -t 镜像仓库地址/镜像名:TAG --platform linux/arm64 . --load

那个点的意思是构建上下文位置为当前目录

原创文章,作者:网友投稿,如若转载,请注明出处:https://www.cloudads.cn/archives/4150.html

发表评论

登录后才能评论