构建多CPU架构支持的Docker镜像

SRS支持x86/armv7/aarch64镜像 • linux/arm/v7 这是armv7也就是32位架构,比如RaspberryPI就是这种服务器,如果你要在PI上使用SRS,可以用这个镜像。可以选择云主机验证ARM的docker,腾讯云ARM[10],阿里云ARM[11],华为云鲲鹏[12],AWS ARM[13]。下面是支持CPU架构镜像的其他背景,若你需要修改代码了自己打镜像,或者需要支持其他CPU架构,可以参考下面的资料支持CPU架构镜像,不能使用一般的方式直接推送仓库,需要使用一个独立的action。 阅读详情

作者简介:
胡晓亮目前就职于IBM Platform Computing 系统科技部云计算部门,担任云计算开发部工程师。自2013年8月开始参与OpenStack,然后又转战Spark,目前工作在K8S相关领域。
责编:钱曙光(qianshg@csdn.net)
声明:本篇为原创内容,CSDN独家发布,禁止未经授权的任何形式转载。

Docker简介

由于基于Hypervisor虚拟化技术仍然存在一些性能和资源使用效率方面的问题,近3年来容器技术席卷了整个互联网应用乃至IT界的技术革新,成为一种被大家广泛认可的服务器资源共享技术。它从根本上变革了应用程序的开发和发布方式,经过爆炸式的成长,容积技术的翘楚Docker实际上已经成为了容器格式和运行时的标准,大量流行的开源应用程序都宣布支持容器化,并且一些企业级的应用程序也开始往容器上迁移, Docker容器世界欣欣向荣。

Multi architecture Docker镜像

Multi architecture Docker镜像的支持让Docker向自己宣称的口号 “Build, Ship, and Run Any App, Anywhere” 更近了一大步。 那什么是Multi architecture Docker镜像呢?我们可以通过一个例子来说明。我们知道JAVA语言编写的应用程序是 “Write once, run anywhere”,它体现了JAVA跨平台的特性,但是JAVA程序的运行环境JVM(JAVA 虚拟机)却不是跨平台的,它是JAVA应用程序和OS平台之间的一个桥梁,不同的类型的OS和CPU架构机器需要安装相应的JVM才能运行JAVA程序。而 Docker image也是一样的,它也是依赖运行平台的,我们不能把一个httpd的ppc64le/linux架构的Docker镜像运行在amd64/linux 架构的环境中,我们也不能把一个Windows镜像运行在Linux平台上,否则你会遇到 “exec format error”。早期Docker镜像存储的设计没有充分考虑到镜像Multi architecture的支持,而是简单的使用镜像存储库的前缀来区分相同应用的不同平台,并建议开发者将不同平台的镜像应该push到相对应的Docker hub的镜像仓库中,而这种糟糕的设计依然保留在最新的Docker设计文档中如下:

例如运行busybox在多个平台上,按照Docker社区的方法如下:

x86-64:     docker run -it --rm busybox or docker run -it --rm amd64/busybox
ppc64le:   docker run -it --rm ppc64le/busybox 
s390x:      docker run -it --rm s390x/busybox 

基于Docker社区的做法,对于我们自己的应用程序Docker镜像多平台支持,我们还可以采取类似方法:

1. 基于tag

x86-64:    docker run -it --rm myapp:x86-64
ppc64le:  docker run -it --rm myapp:ppc64le
s390x:      docker run -it --rm myapp:s390x

2. 基于image 名称的后缀

x86-64:    docker run -it --rm myapp_x86-64
ppc64le:  docker run -it --rm myapp_ppc64le
s390x:      docker run -it --rm myapp_s390x

不管是基于镜像存储库的前缀,或者是基于tag或image名称后缀来区分不同的运行平台来pull相应的Docker镜像都不是好的设计,而好的设计是应该用户只要执行docker pull myapp就行了而不用关心容器的运行平台,Docker engine根据运行环境来pull相关的镜像,真正的做到 “Run Any App, Anywhere”。Docker社区已经注意到了这个问题,通过重新定义 v2.2 Image specification format(PR #1068)并在 Implement schema2 manifest formats(PR #1281)实现了Multi architecture Docker镜像功能。从Docker registry v2.3和Docker 1.10 开始,Docker hub就可以pull multi architecture Docker镜像了.

例如有2个Linux host,一个host(kvm-014009)arch是x86_64,另一个host(power807l )arch是ppc64le,我们分别在两个host 上运行 busybox 容器并且打印容器中基础镜像的arch, 看看是不是pull相同的镜像但是可以打印出与平台相关的输出。

x86_64 host :

[root@kvm-014009 ~]# docker run -it --rm busybox arch

Unable to find image 'busybox:latest' locally

latest: Pulling from library/busybox

67a0688b88df: Pu
manifest-tool, 清单列表对象创建/查询的清单工具.zip manifest-tool, 清单列表对象创建/查询的清单工具 清单工具manifest-tool 是一个 命令行 实用工具,它实现 Docker 注册表 v2.2 API的一部分,用于与注册表中的清单对象相互作用。这个工具主要是为了查看。创建和推动新的英镑清单清单对象类型在 Docker 注册表 立即下载

相关推荐

manifest-tool:清单清单对象创建清单工具

清单工具 manifest-tool是一个命令行实用程序,用于实现Docker注册表v2.2 API的客户端的一部分,用于与符合该规范的注册表中的清单对象进行交互。 创建此工具主要是为了查看,创建和推送Docker注册表中的新清单清单对象类型。 清单列表是在中定义的,并且主要是为了在Docker注册表中支持架构和/或平台映像而存在。 请注意,manifest-tool最初是与IBM Bangalore的作为一个联合项目启动的,最初是由从注册表客户端代码库skopeo派生的,后来成为了的一部分。 感谢Antonio和Harshal所做的最初工作,使之成为可能! 另外,请注意,将这些功能直

Docker Registry的manifest-tool

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33716941的博客 971

manifest manifest

41.0.2272.89.manifest

manifest-tool 教程与指南

**manifest-tool** 是由 [estesp](https://github.com/estesp) 创建的一个命令行工具,用于处理Docker v2版本2的“manifest列表”(现在称为OCIv1图像规范中的“索引”)。这个工具的主要目的是组合各种架构和平台特定的容器镜像清单,形成一个单一的参考点。这样,容器运行时可以根据本地节点的架构和平台选择适当的索引条目,而不需要单独的指令

gitblog_00981的博客 623

构建种系统架构支持Docker 镜像 -- docker manifest 命令详解

https://yeasy.gitbooks.io/docker_practice/image/manifest.html

liuhehe的博客 1639

使用 docker buildx 构建 CPU 架构镜像

简介:MariaDB 是一个开源的关系型数据库管理系统,向后兼容,可替代 MySQL。本文主要为大家介绍如何在 Ubuntu 20.04 上安装 MariaDB。 镜像下载、域名解析、时间同步请点击阿里巴巴开源镜像站 MariaDB 是一个开源的关系型数据库管理系统,向后兼容,可替代 MySQL。本文将会讲解如何在 Ubuntu 20.04 上安装和维护 MariaDB。 一、前提条件 你需要拥有 Ubuntu 服务器的管理权限,或者以 root 身份 或者以拥有 sudo 权限的用户身份登录..

Aug_Spark的博客 765

跨平台构建 Docker 镜像新姿势,x86、arm 一把梭

点击 "阅读原文" 可以获得更好的阅读体验。在工作和生活中,我们可能经常需要将某个程序跑在不同的 CPU 架构上,比如让某些不可描述的软件运行在树莓派或嵌入式路由器设备上。特别是 Docker 席卷全球之后,我们可以轻松地在 ARM 设备上通过容器部署各种好玩的应用,而不用在意各种系统的差异性。但是想要跨平台构建 Docker 镜像可不是一件轻松的活,要么到不同 CPU 架构的系统上全部构建一遍,...

云原生实验室 2万+

交叉编译docker_构建平台 Docker 镜像新姿势,x86、arm 一把梭

在工作和生活中,我们可能经常需要将某个程序跑在不同的 CPU 架构上,比如让某些不可描述的软件运行在树莓派或嵌入式路由器设备上。特别是 Docker 席卷全球之后,我们可以轻松地在 ARM 设备上通过容器部署各种好玩的应用,而不用在意各种系统的差异性。但是想要跨平台构建 Docker 镜像可不是一件轻松的活,要么到不同 CPU 架构的系统上全部构建一遍,要么就得在当前系统上通过虚拟化技术模拟不同的...

weixin_39929595的博客 1786

使用 buildx 构建平台 Docker 镜像

原文链接:使用 buildx 构建平台 Docker 镜像 在工作和生活中,我们可能经常需要将某个程序跑在不同的 CPU 架构上,比如让某些不可描述的软件运行在树莓派或嵌入式路由器设备上。特别是 Docker 席卷全球之后,我们可以轻松地在 ARM 设备上通过容器部署各种好玩的应用,而不用在意各种系统的差异性。 但是想要跨平台构建 Docker 镜像可不是一件轻松的活,要么到不同 CPU...

云原生实验室 5863

docker buildx跨平台镜像生成

注:首先需要在docker.hub网站注册个人账号,以下使用的cf2021docker均为个人docker账号id。 step1:由于 Docker 默认的 builder 实例不支持同时指定--platform,我们必须首先创建一个新的 builder 实例。 同时由于国内拉取镜像较缓慢,我们可以使用配置了 镜像加速地址 的 dockerpracticesig/buildkit:master 镜像替换官方镜像。 # 适用于国内环境(我用的) $ docker buildx create --us

qq_19072921的博客 2122

CPU架构支持难题,Docker跨平台构建这样解决

轻松解决CPU架构适配难题,Docker跨平台构建提供高效方案。利用Buildx扩展原生支持架构镜像编译,适用于ARM与AMD混合部署场景,实现一次构建端运行。提升发布效率,降低环境差异风险,值得收藏。

CodeTrick的博客 888

Docker Buildx最佳实践:架构镜像构建指南

Docker Buildx作为官方提供的增强工具,使得开发者能够更简单、更高效地为不同架构创建一致的容器镜像,极大地提升了开发效率和应用的可移植性。它使得用户可以创建平台(包括不同的CPU架构如AMD64、ARM等)的 Docker 镜像,并且支持更复杂的构建场景。随着技术的不断演进,我们期待Docker Buildx能带来更创新功能,继续推动容器化技术和云原生应用的发展,帮助开发者更好地满足样化的业务需求。:允许用户管理和使用个 builder 实例,每个实例都可以配置为特定的构建选项集。

zzjlhlcd的博客 1911

超全指南:metrics-server架构镜像构建Docker manifest配置实践

还在为不同CPU架构的Kubernetes集群部署metrics-server而烦恼?每次都要手动构建和推送不同架构镜像?一文解决你的平台部署难题! 读完本文,你将获得: - ✅ metrics-server架构镜像构建完整流程 -Docker manifest配置最佳实践 - ✅ 自动化构建脚本详解 - ✅ 跨平台部署的坑点与解决方案 ## 为什么需要架构支持? 现代Kube

gitblog_00223的博客 766

【亲测免费】 docker-zerotier-moon:一键创建ZeroTier Moon的Docker镜像

docker-zerotier-moon:一键创建ZeroTier Moon的Docker镜像 项目介绍 docker-zerotier-moon 是一个基于Docker镜像,能够帮助用户一键创建ZeroTier Moon节点。ZeroTier 是一款开源的软件定义网络(SDN)工具,能够为用户提供虚拟专用网络功能。通过docker-zerotier-moon,用户可以快速部署Moon节点,进而...

gitblog_01093的博客 1103

docker buildx进行架构镜像仓库迁移

docker buildx进行架构镜像仓库迁移

赴前尘 121

arm蜂鸣器程序 linux_构建平台 Docker 镜像新姿势,x86、arm 一把梭

在工作和生活中,我们可能经常需要将某个程序跑在不同的 CPU 架构上,比如让某些不可描述的软件运行在树莓派或嵌入式路由器设备上。特别是 Docker 席卷全球之后,我们可以轻松地在 ARM 设备上通过容器部署各种好玩的应用,而不用在意各种系统的差异性。但是想要跨平台构建 Docker 镜像可不是一件轻松的活,要么到不同 CPU 架构的系统上全部构建一遍,要么就得在当前系统上通过虚拟化技术模拟不同的...

weixin_35662417的博客 195

简单几招助您加速 ARM 容器应用开发和测试流程

随着5G时代的临近,低延迟网络、AI硬件算力提升、和智能化应用快速发展,一个万物智联的时代必将到来。我们需要将智能决策、实时处理能力从云延展到边缘和IoT设备端。阿里云容器服务推出了边缘容器,支持--端应用一体协同。在IoT和边缘计算场景,我们不但需要支持X86芯片也要提供对ARM架构芯片的支持。此外随着国产ARM CPU的快速发展,也需要我们在产品测提供ARM版本的容器产品支持。本文将介...

zhaowei121的博客 659
上一篇: 举世瞩目的「深度神经网络」如何应用于移动端?
下一篇: Presslabs从研究到生产的Kubernetes之旅
csdn研发技术
博客等级 码龄9年 1379粉丝 90原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值