分享好友 最新动态首页 最新动态分类 切换频道
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 集成,并为您提供了几种推广和扫描多架构容器映像的方法,最后,我们了解了使用多架构容器的注意事项。

最新文章
阿里巴巴排名靠前的技巧是什么?具体内容是什么?
现在电子商务内的竞争是越来越激烈,怎么样才能让自己的商品信息排名更靠前,这个问题是所有商家们关心的问题。毕竟商品信息越靠前曝光率就会越高,那么阿里巴巴排名靠前的技巧是什么?一、阿里巴巴排名靠前的技巧是什么?店铺的装修;2、要用
超级PDF转换器万能版
超级PDF转器是一款功能强大好用的pdf文件转换成其它格式文件的软件,界面简单,功能稳定,支持批量转换,操作起来 非常方便,完美支持将pdf文档转成word文档。软件功能特点:1.支持自定义转换页面范围。2.支持转换加密后的PDF文件(需要手动
视频影视文案自动生成工具推荐:盘点哪些创作软件具有高效文案写作生成功能
在当今数字化时代视频影视行业的发展日新月异,而优秀的影视文案则是吸引观众、提升影视作品优劣的关键因素之一。创作出引人入胜的影视文案并非易事,它需要创作者具备丰富的想象力、深厚的文学功底和敏锐的市场洞察力。为了升级工作效率多
江西新能源科技职业学院重庆招生计划人数 2024年招生专业代码
江西新能源科技职业学院在重庆招生章程、招生计划和招生规定等是考生填报志愿的重要依据,今天吴老师先向考生和家长提供最新的江西新能源科技职业学院在重庆的招生计划和人数,希望大家在报考江西新能源科技职业学院时作为参考!1、江西新
置顶免鉴H5跳转小程序的坑,微信可跳,H5无法跳、自定义传参、云函数上传失败等小白解决方案精选热门
本文适合小白交流,大佬勿喷。把自己遇到的坑,小白解决方案贴出来交流。坑1:微信跳转与H5跳转,跳转的路径不是一样的。跟我一样粗心伙伴注意了官方说明:网页会判断所在的环境来觉得采用哪种跳转方式,如检测到微信客户端内,则免鉴权使
推广型网站开发怎么做
推广型网站开发的核心观点包括:明确目标用户、良好的用户体验、SEO优化、内容营销、社交媒体整合、数据分析与监控、持续优化。其中,明确目标用户是推广型网站开发的首要任务。了解你的目标用户群体,包括他们的年龄、性别、兴趣爱好以及
百度免费推广,企业网络营销的黄金法则,百度免费推广登录入口
在当今数字化时代,互联网已成为企业营销不可或缺的一部分,而在众多网络平台中,百度作为中国最大的搜索引擎,其推广价值不言而喻,对于许多中小企业和个人创业者来说,付费推广的成本可能过高,掌握百度免费推广的策略就显得尤为重要,本
谷歌推广的终极指南:实用技巧助您在百度搜索引擎中脱颖而出
在当今数字化时代,谷歌推广已成为企业获取更多曝光和潜在客户的重要手段。然而,要在百度搜索引擎中脱颖而出,需要一些专业的技巧和策略。本文将为您详细介绍如何通过谷歌推广来提升网站在百度搜索引擎中的排名和曝光度,助您实现更大的商
如何通过有效的SEO策略提高网站排名
在如今的互联网时代,搜索引擎优化(SEO)已经成为了每个网站、每个内容创作者必须掌握的一项技能。无论是个人博客、小型电商网站,还是大型企业的官网,SEO都能有效地帮助提高网站在搜索引擎中的排名,增加网站的曝光度。然而,许多站长或
Word公文排版助手
如果你是经常编写文件、报告、邮件等公文的人士,你一定知道排版的重要性。一份干净、整齐、规范的文档,不仅可以让读者快速获取有效信息,还能够给人带来舒适的视觉感受。Word公文排版助手,就是为优化你的word文档排版而生的。Word公文排
相关文章
推荐文章
发表评论
0评