当前位置: 首页 > news >正文

Docker构建多平台镜像

docker的多架构镜像构建
目前很多服务器都是基于arm架构的,而现在大多数的docker镜像都是基于x86架构的。一种情况就是同样的代码编译成业务包做成镜像需要部署在不同架构的服务器上,这个时候我们就可以使用docker的多平台构建了。
以下操作是在centos7.9系统上完成(x86_64位)
注意要使用docker的多架构镜像构建功能linux内核需要大于4.19才行,如下图,我的centos系统的内核为5.4.278
image.png
如果不是4.19及以上的内核,请升级linux内核,centos7系统可以参考此文章升级内核:https://blog.csdn.net/pky86676022/article/details/139870965

一、启用docker buildx插件

Docker Buildx 是 Docker的CLI插件,来自于Moby BuildKit 。你的docker版本不能低于19.10使用docker version命令查看docker版本
image.png
我的docker版本是26.1.4符合要求,下面启用docker buildx功能:
编辑docker的配置文件 **vim /etc/docker/daemon.json **在配置文件中新增如下标签对:
“experimental”: true ,
image.png
重启docker

sudo systemctl daemon-reload
sudo systemctl restart docker

检查docker buildx版本:

 docker buildx version

image.png
在当前的x86_64架构的机器上运行一个特权 Docker 容器启用 binfmt_misc 来运行非x86架构的 Docker 镜像

docker run --rm --privileged  docker/binfmt:a7996909642ee92942dcd6cff44b9b95f08dad64-amd64

image.png
运行如下命令检查是否其支持arm64架构的编译工作了

ls -al /proc/sys/fs/binfmt_misc/

image.png
接下来创建一个新的支持多架构的构建器。

docker buildx create --use --name mybuilder
docker buildx inspect mybuilder --bootstrap
docker update --restart=always buildx_buildkit_mybuilder0

检查这个构建器

docker buildx ls

image.png
如图,这个构建器可以构建linux/amd64和linux/arm64的镜像

二、写一个Dockerfile,尝试构建多架构镜像并推送到仓库中

先登录我的私服仓库,等下把多架构镜像推送到这里
image.png
我这里以制作一个Java运行环境的镜像为例演示。
vim Dockerfile

# 制作一个Java基础镜像
FROM alpine:3.18.7
LABEL maintainer="pkyit"
RUN apk add --no-cache openjdk8-jre tzdata curl
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone

image.png
运行如下命令构建多架构镜像:

docker buildx build  \
-t registry.cn-hangzhou.aliyuncs.com/pkyit/jre8:alpine3.18.7 \
-f Dockerfile .  \
--platform linux/amd64,linux/arm64 --push

image.png

三、验证

等待片刻,显示已经构建了linux下的amd64和arm64的2个镜像并且推送到阿里云的私服仓库中了。
image.png
image.png
不妨把arm64架构的镜像拉取下来验证一下看看是不是arm64架构的:

# 拉取指定架构的镜像
docker pull --platform=linux/arm64 registry.cn-hangzhou.aliyuncs.com/pkyit/jre8:alpine3.18.7
# 检查指定镜像的架构
docker inspect  registry.cn-hangzhou.aliyuncs.com/pkyit/jre8:alpine3.18.7 | grep Architecture

image.png
以上就是docker多架构构建镜像的全部流程。

参考以下链接:
https://blog.csdn.net/tanjunchen/article/details/124060471
https://blog.csdn.net/weixin_43403660/article/details/125974212
https://blog.csdn.net/m0_70748381/article/details/126865574
如果我的文章对您有帮助,还请您多多支持我。支付宝帮忙扫一下吧
在这里插入图片描述

http://www.lryc.cn/news/384672.html

相关文章:

  • 群体优化算法---石墨烯优化算法介绍以及在期权定价上的应用(Black-Scholes模型来计算欧式期权的理论价格)
  • 创纪录!沃飞长空完成新一轮融资,实力获资方认可
  • 1991java Web体检预约管理系统eclipse定制开发mysql数据库BS模式java编程jdbc
  • 如何优雅终止线程/线程池
  • 泰迪智能科技实验室产品-云计算资源管理平台介绍
  • .Net WebApi启动 Swagger异常报错: Failed to load API definition
  • CSS新手入门笔记【导入方法、选择器介绍、选择器优先级、属性详细介绍、盒子模型】
  • 制作高校专属PPT时,如何将校徽设置成透明底色?无须PS
  • 设计模式之【适配器模式】
  • AI论文降重:一键操作,让你的论文查重率瞬间下降
  • Cmake--学习笔记
  • LangChain让LLM带上记忆
  • Word恢复历史文档,记好4个方法就足够
  • 收银系统源码-千呼新零售2.0【线上营销】
  • OnlyOffice测评
  • UDS - 8 Application layer protocol
  • 二叉树公共最近祖先
  • 智慧运维系统指导规范
  • 最新自助下单彩虹云商城系统源码,含小储云商城模板免授权
  • 头条系统-05-延迟队列精准发布文章-概述添加任务(db和redis实现延迟任务)、取消拉取任务定时刷新(redis管道、分布式锁setNx)
  • .gitignore git添加忽略文件
  • 面向遥感图像的多阶段特征融合目标检测方法
  • 操作系统面试篇一
  • OPenFast软件中的NRELOffshrBsline5MW_Onshore_ServoDyn.dat文件详解
  • 搭建rtmp/rtsp流媒体服务器的步骤
  • vue自定义事件传递数据
  • TensorBoard 安装与启动
  • 云计算运维工程师的突发状况处理
  • 【CSS in Depth 2 精译】1.6 本章小结
  • FFmpeg源码:ff_h2645_extract_rbsp函数分析