分享好友 最新动态首页 最新动态分类 切换频道
Docker多架构容器镜像构建方式
2024-12-26 23:39

点击上方蓝字⭐️关注“DevOps云学堂”,接收最新技术实践

今天是「DevOps云学堂」与你共同进步的第 39 

第⑦期DevOps实战训练营·招新中



在这篇博文中,我们将了解什么是多架构容器镜像?怎么运行的?如何建设和推广?我们将编写一个示例代码,用于在 CI/CD 管道中构建多架构镜像。

多架构 Docker 镜像是一个镜像列表,其中引用了为多个 CPU 架构编译的二进制文件和库。当我们需要在不同的 CPU 架构(ARM、x86、RISC-V 等)上运行相同的应用程序而无需为每个架构创建单独的镜像时,这种类型的镜像非常有用。

性能和成本优化:容器多架构用于优化不同CPU架构上的性能。通过构建和部署针对特定架构优化的镜像,我们可以获得更好的性能并减少资源使用。
跨平台开发:如果您正在开发需要在多个平台上运行的应用程序,例如ARM和x86,您可以使用buildx构建多架构Docker镜像并在不同架构上测试应用程序。
IoT 设备:许多 IoT/Edge 设备使用 ARM 处理器,这需要与 x86 处理器不同的二进制文件和库。通过多架构映像,您可以创建可在 ARM、x86 和 RISCV 设备上运行的映像,从而更轻松地将应用程序部署到各种 IoT 设备。

使用多架构容器镜像的几个优点是

  • 能够在多个 CPU 架构上运行 Docker 镜像

  • 使我们能够选择环保的CPU架构

  • 从一种架构无缝迁移到另一种架构

  • 使用arm64获得更好的性能并节省成本

  • 能够使用arm64支持每个CPU更多的内核

构建多架构容器的方法有多种,但我们将重点关注广泛使用且简单的方法。

  1. 传统 Docker 构建命令

  2. 使用Docker buildx

使用传统的 Docker 构建命令

在本教程中,我们将在不同 CPU 架构的机器上手动构建两个镜像,并将它们推送到容器注册表(例如 Dockerhub,然后创建包含两个镜像引用的清单文件。清单文件是一个简单的 JSON 文件,其中包含容器映像的索引及其元数据,例如映像大小、sha256 摘要、操作系统等。稍后我们将在本博客中了解有关清单文件的更多信息。
例如。这是我们的基本 Dockerfile。

使用 Docker Buildx

使用 buildx,我们只需要运行一个具有参数化架构的命令。

在后台, 命令使用 ,因此当我们运行上述命令时,它会创建一个带有 映像的容器,该容器具有用于多个 CPU 架构的,负责模拟 。我们可以通过在正在运行的容器中运行来查看这些 QEMU 二进制文件。

在上面的命令中,我们传递了所以它使用QEMU 二进制文件来构建 映像,并且 是在主机上本地构建的。构建两个映像后,它会使用该选项创建清单文件,并将两个映像与清单文件一起推送到注册表服务器。

通过检查清单文件,我们可以看到字段包含实际的镜像链接,当与主机系统架构匹配时将获取该链接。

我们还可以使用 命令以更易于理解的格式查看相同的输出。

如果您在构建多架构映像时遇到任何问题,可以运行以下命令来重置 条目。

我们还可以使用 Buildah构建多架构容器镜像。


如果您的工作负载运行在具有不同 CPU 架构的多台计算机上,那么为您的应用程序构建多架构 Docker 映像总是更好。将多架构构建集成到 CI/CD 中可以更轻松地简化映像构建和扫描过程,仅添加一个 Docker 标签,并节省时间。下面我们编写了用于构建多架构镜像的 和 示例代码。

Jenkins 多架构 CI

目前,Jenkins Docker 插件不支持多架构构建,因此我们可以使用 buildx 来构建多架构镜像。

否则,我们可以在 Jenkins 阶段中使用传统的 Docker 构建命令,如上所示,具有不同的 Jenkins 工作节点集。

用于构建多架构容器映像的 GitHub CI 管道

GitHub Actions还支持多架构容器映像。它还在后台使用 QEMU CPU 模拟。

提升 Docker 多架构需要一些额外的步骤,因为该命令仅根据主机的 提取单个映像。为了推广多架构Docker镜像,我们需要使用以下方法一一拉取所有CPU架构镜像,然后创建清单文件并将其推送到新的注册服务器。为了避免这些复杂的步骤,我们可以利用以下工具。
或可用于仅使用一个命令即可将我们的多架构映像从一个帐户提升到另一个帐户。在后台,这些工具的作用是使用获取所有多架构映像,然后创建清单并推送所有映像和清单。

如果只想使用 Docker 命令将该镜像提升到更高的环境(Production)怎么办

我们可以使用等任何工具进行镜像扫描,但我们必须将多架构镜像一一拉取然后扫描它们,因为默认情况下 命令只会获取与主机 CPU 匹配的一个镜像。我们可以利用 命令来拉取不同的 CPU 架构镜像。我们可以这样做

使用多架构容器有显着的好处,但在采取行动之前,您当然应该注意一些注意事项。

  • 存储其他架构镜像需要额外的存储空间。

  • 构建多架构容器映像也需要时间,而在 QEMU 仿真上构建 arm64 会消耗大量时间和资源。

  • 与本机运行二进制文件相比,在不同 CPU 上模拟运行二进制文件的性能明显较低。

  • buildx 构建arm64 映像仍然存在一些问题,例如基础映像在arm64 中不可用,并且执行sudo 级别访问或构建交叉编译静态链接二进制文件需要额外的步骤。

  • 需要对所有镜像进行容器一一扫描。

  • Buildx 多架构构建仅在 amd64 CPU 架构上受支持。

在本博客中,我们了解了什么是多架构容器及其用例。我们通过示例代码将多架构构建与 Jenkins 和 Github CI 集成,并为您提供了几种推广和扫描多架构容器映像的方法,最后,我们了解了使用多架构容器的注意事项。

最新文章
笔记本推荐测评轻薄(2021笔记本轻薄本推荐)
本篇文章给大家谈谈笔记本推荐测评轻薄,以及2021笔记本轻薄本推荐对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。Magicbook 2019和Magicbook 14相比,Magicbook 14屏占比更高,机身更小巧,颜值更出色,从便携性和颜值考虑,Magi
OpenAI加入AI搜索大戰,谷歌、百度有了真正的對手
文|雷科技AI 搜索的戰場,OpenAI 也要進入。今年年初,科技媒體 The Information 就曾爆料 OpenAI 正在開發搜索產品來挑戰谷歌。到最近,有越來越多信息證明了這一點,並且還有具體的產品體驗細節流出。根據報道,不同於 ChatGPT 聊天機器
有道词典国际版最新版(U-Dictionary)
有道词典国际版最新版是一款非常好用的词典软件!软件支持大家在手机上面进行各种语言单词操作,操作上面也是非常的简单。本次带来的国际版本更是精简了很多不必要的内容!让你使用起来更加舒适!喜欢的朋友们不妨下载试一试吧!有道词典国
SEO插件,免费的SEO插件大全
SEO插件的作用 让我们来谈谈SEO插件的作用。SEO插件是一种能够在网站建设和管理过程中,提供全方位、智能化SEO服务的工具。它们通常嵌入在网站后台,为站长提供了诸如关键词优化、页面结构调整、外链管理等一系列强大功能ÿ
苏州老房子改造装修,千万别走进四大误区!
  老房子在苏州并不少见,这些房子有的甚至有几十年的时间。老房子住的时间久了,难免会存在安全隐患,不仅仅在墙面部分出现问题,就连地面以及其它的环节,也会出现一系列的问题。所以,老房子的装修改造必须要做好,苏州老房子改造装修
配置https---Nginx认证ssl证书
nginx作为前端的负载均衡服务器已经很熟悉了,项目需要使用https安全的时候就需要认证证书了 dockerweb管理工具 Portainer 如果对docker不那么熟悉可以使用docker 第三方管理端nginx环境安装 弱环境依赖的中间件都建议docker部署 运行基础容
彭州屋顶漏水维修电话〈免费上门〉彭州市屋顶防水补漏师傅
不砸砖、不砸墙;免砸砖防水补漏技术,2小时快速解决漏水问题,超长保修期。漏水维修服务项目:女儿墙渗水、厕所渗水、楼顶漏水、窗台防水补漏、别墅房顶漏水、卫生间墙面起皮、卫生间漏水、洗手间渗水、飘窗渗水、楼顶防水、洗手间墙面起皮、
模拟器游戏手机版哪个好2023 五款人气模拟器手游推荐
近几年来模拟器类型的游戏可以说拥有超级好的热度,如今市面上也有大量的模拟器类型手游,那么模拟器游戏手机版哪个好2023?模拟器游戏的最大特点就是可以让大家感受非同凡响的游戏体验。下面小编就给大家来讲解一下五款人气模拟器手游排名
长沙少儿编程-长沙培训机构
机构一:优梦编程优梦编程是一家专注于少儿编程教育的在线教育平台,提供优质的直播授课和全方位的课后服务。课程内容涵盖图形化编程、Python编程等,适合不同年龄段的孩子。同时,机构还有一支经验丰富的师资队伍和良好的学习氛围。机构二
用大模型评分,精准筛选转化率高的“网红博主”
嘉宾 | 赵越编辑 | 罗燕珊策划 | AICon 全球人工智能开发与应用大会AI 重塑了产品生命周期的各个环节吗?AI 正从过往单纯的辅助工具,逐步转变为产品生命周期中的核心“玩家”。无论是设计、开发还是营销,AI 的身影几乎渗透到了每一个环节
相关文章
推荐文章
发表评论
0评