目录
1、跨平台编译背景
在x86-64环境下编译适用于arm64平台的docker镜像
2、跨平台编译过程
2.1 docker环境
本实验通过ubuntu24.10 amd64环境中使用docker 27.4.0版本下进行中,方案可行
2.2 docker配置
修改/etc/docker/daemon.json文件,添加"experimental": true
systemctl daemon-reload
systemctl restart docker.service
2.3 buildx查看
docker buildx version //查看版本
docker buildx ls //查看编辑器列表
2.4 启用binfmt_misc
运行一个特权容器,容器里面写好了设置脚本
docker run --privileged --rm tonistiigi/binfmt:latest --install all //启动容器
ll /proc/sys/fs/binfmt_misc/ //验证是否安装好misc
cat /proc/sys/fs/binfmt_misc/qemu-aarch64 //验证是否启用了目标编译平台
2.5 创建自定义buildx构建器
docker buildx create --use --name mybuilder //创建一个自定义构建器
docker buildx inspect mybuilder --bootstrap //启动自定义构建器
docker buildx ls //再次查看自定义的构建器信息
2.6 编译跨平台镜像
准备Dcokerfile文件
FROM devilbox/php-fpm:5.6-prod-0.144 RUN apt-get install supervisor -y
docker buildx build -t super5:latest --platform linux/arm64 . --load //保存目标架构镜像
docker buildx build -t registry/super5:latest --platform linux/arm64,linux/amd64 . --push //多平台镜像编译推送至远程目标仓库