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

最新文章
港股开盘:恒生指数开盘跌0.59%,恒生科指跌0.61%,美团跌近2%
金融界12月17日消息 港股恒生指数开盘跌0.59%,报19678.03点,恒生科技指数跌0.61%,报4387.62点,国企指数跌0.53%,报7095.14点,红筹指数跌0.1%,报3691.93点。大型科技股中,阿里巴巴-W跌0.53%,腾讯控股跌0.89%,京东集团-SW跌1.39%,
玩转serv00虚拟主机(一):零成本搭建wordpress个人博客&入门
不少童鞋在搭建博客、alist、图床等各类web服务的时候苦于云的成本望而却步,但其实搭建web服务也可以用虚拟主机,不少厂商都有免费的虚拟主机,但对于很多童鞋可能是第一次听说虚拟主机,这里就开一个新的系列,玩转serv00家的免费虚拟主
考研民商法学专业容易上岸的大学怎么选择
在准备考研的过程中,选择合适的学校是至关重要的一步。尤其是对于民商法学专业的考生来说,如何找到一所适合自己的学校更是需要认真考虑的事情。本文将为大家提供一份考研选择民商法学学校指南,帮助你在众多院校中做出明智的决定。首先,
老照片如何修复成高清?四个老照片修复教程全揭晓
让老照片焕发新生:给你分享老照片修复的精彩工具 提到老照片,很多人心中总是涌动着温暖的回忆。家人们,是否曾经翻阅过那些泛黄的照片,感受到那份岁月的沉淀?但时间的流逝总会导致照片的劣化,很多细节模糊甚至消失。那么,我们该如何
四川甜城旅游景点大全:热门景点排名及详细介绍
四川甜城即四川省内江市以其独有的地理位置和丰富的历史文化遗产而闻名遐迩。内江不仅是的“糖都”也是甜城文化的发源地。这里既有壮丽的自然景观又有深厚的历史文化底蕴是一个不可多得的旅游胜地。从古朴典雅的隆昌石牌坊到秀美宁静的甜城
打破传统边界:类似WU界SaaS模式的无边界链接能力?软件开发服务
打破传统边界:类似WU界SaaS模式的无边界链接能力?软件开发服务+系统搭建+电商模式,微三云麦超介绍前文介绍:莞云软件供应链云平台系统——为什么选择莞云 莞云,移动应用系统产业软件供应链平台! 东莞市商二信息科技有限公司旗下品牌有
腾讯地图开放平台申请
2024年01月14日吴经理100地图标注 , 地图定位 , 导航地图标记网络技术服务;信息技术咨询服务;技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广;日用百货销售;化妆品零售;互联网销售(除销售需要许可的商品);化妆品批发;服
《推广商业范例》PPT课件
《《推广商业范例》PPT课件》由会员分享,可在线阅读,更多相关《《推广商业范例》PPT课件(32页珍藏版)》请在装配图网上搜索。1、RSS 计划更新条码与标识 2 议程介绍缩小空间码(RSS) RSS与 EAN/UPC和EPC的比较 GS1的 RSS决策 GS1推广商
格蕾丝·凯利,才是王妃中的王妃,永远优雅的时尚icon!
范主说:美人已去,风格永恒文 | 神马君, 授权商务范发布神马君前段时间去了趟故宫,在那看了一场摩纳哥王室的展览。展览浓缩了摩纳哥公国多年的历史和各方面的成就,神马君一进到展馆,就眼前一亮看到了熟悉的”摩纳哥王妃“---格蕾丝·凯
昆明SEO整站优化,策略与实战技巧深度解析
昆明专业整站SEO,深度解析优化策略与实战技巧。本文涵盖关键词研究、网站结构调整、内容优化、外部链接建设等核心环节,旨在帮助从业者掌握高效SEO方法,提升网站排名和流量。随着互联网的快速发展,搜索引擎优化(SEO)已经成为企业提升
相关文章
推荐文章
发表评论
0评