导语:偶尔有需求 镜像需要制作amd和arm的不同镜像。发现有buildx这个东西。记录一下备用
虚拟机要求
uname -r > 4.8
docker-ce > 18.06
安装必要的支持
# qemu-user-static 是一个可以在当前操作系统来运行其他架构的仿真器,可以通过x86的机器编译出其他不同架构的docker镜像
# binfmt-support 解析不同系统的二进制文件,再将执行结果返回用户空间的进程
apt install -y qemu-user-static binfmt-support
ls /usr/bin/qemu-*
配置多平台cpu指令集模拟机,让docker支持除当前处理器之外的其他cpu指令集
# https://github.com/multiarch/qemu-user-static
# 测试
# 1
docker run --rm -t arm64v8/ubuntu uname -m
# 2 uname -r > 4.8
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# 3
docker run --rm -t arm64v8/ubuntu uname -m
docker run --rm -t arm64v8/ubuntu lscpu # 可以看到cpu是arm的
创建并进入构建环境
# 默认名称为default不能直接使用 buildx用来构建和cpu指令集不一致的镜像
docker buildx ls
#
docker buildx create --name mybuild
docker buildx use mybuild
docker buildx inspect --bootstrap # 初始化
docker buildx inspect # 确认当前环境
Dockerfile如下
# 确保镜像有arm版本
FROM ubuntu:22.04
RUN apt update;apt install nginx -y
EXPOSE 80 443
CMD ["nginx","-g","daemon off;"]
同时构建x86和arm的镜像
#docker buildx build -t test:nginx --platform linux/amd64,linux/arm64 . --push
#docker buildx build -t test:nginx -t test:v1 --platform linux/amd64,linux/arm64 .
docker buildx build -t test:nginx --platform linux/amd64,linux/arm64 .
构建完成