[kubernetes]-dockerx构建多cpu架构的镜像

文章介绍了如何利用buildx和qemu-user-static在x86系统上构建amd64和arm64的Docker镜像。首先,确保系统满足最低要求并安装必要的支持包,如qemu-user-static和binfmt-support。接着,配置多平台CPU指令集模拟,通过dockerrun测试。然后,创建并进入构建环境,使用buildx初始化和构建镜像。最后,展示了Dockerfile的内容,并演示了如何同时构建两个平台的镜像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导语:偶尔有需求 镜像需要制作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 . 

构建完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爷来辣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值