草庐IT

The requested image‘s platform (linux/arm64/v8) does not match the detected host platform (linux/amd

smile.shu 2023-05-20 原文

这一段完整的报错是:

The requested image’s platform (linux/arm64/v8) does not match the detected host platform (linux/amd64) and no specific platform was requested

翻译过来就是说:请求的映像的平台(linux/arm64/v8)与检测到的主机平台(linux/amd64)不匹配,未请求特定平台。

背景:

这段报错是发生在内网,物理机Ubuntu 20.04 x86 架构下运行docker容器,恰好这个docker容器是我打包到私有仓库的基于arm64/v8架构的ubuntu环境下运行的turn服务器。于是就发生了在 x86 架构下 的物理机Ubuntu运行基于arm64/v8架构的ubuntu软件服务,于是docker报错,容器运行失败。

Mac下解决方案:

如果是Mac苹果电脑,并且在Docker上运行某个应用,则可以尝试如下解决方式。

启动命令加入 --platform linux/amd64 即可。

示例:

docker run -it --platform linux/amd64 --name dgraph dgraph/standalone:v21.03.0

按照这个说法。我在本地Mac上也成功运行了该容器。实际上是,我在Mac上成功分别运行了arm64/v8 架构的Ubuntu软件服务、和amd64架构的Ubuntu软件服务。我也理所应当的认为docker可以在任务环境下运行镜像容器。然而事实是这个报错打醒了我。

刨根问底

Q:amd64 和arm64v8 有什么区别?
A:amd64 和 arm64v8 都是用于描述计算机系统体系结构的指令集架构。它们之间的主要区别在于,amd64 是一种用于基于 x86 架构的计算机的指令集,而 arm64v8 则是一种用于基于 ARM 架构的计算机的指令集。


Q:docker 上面Ubuntu镜像中的amd64 和arm64v8 有什么区别?
A:Docker 是一个用于简化应用程序的部署、测试和维护的开源容器管理平台。在 Docker 上运行的 Ubuntu 镜像(或镜像的版本)中的 amd64 和 arm64v8 区别主要在于它们适用于不同的架构类型。具体来说,amd64 镜像可以在基于 x86 架构的计算机上运行,而 arm64v8 镜像则可以在基于 ARM 架构的计算机上运行。


Q:x86架构的计算机可以运行arm64v8的镜像吗?
A:通常来说,基于 x86 架构的计算机是不能运行 arm64v8 镜像的。这是因为 x86 架构和 ARM 架构有着不同的指令集,所以他们所能运行的镜像也是不同的。


Q:docker镜像构建的容器不是可以在任何操作系统运行吗?
A:是的,Docker 镜像构建的容器是可以在大多数操作系统上运行的。Docker 容器的一个重要特性是它们是轻量级且可移植的,因此可以在多种不同的操作系统中运行。不过,需要注意的是,Docker 容器的架构类型必须与宿主操作系统的架构类型相匹配。例如,如果宿主操作系统是基于 x86 架构的,那么 Docker 容器也必须是基于 x86 架构的。


Q:那为什么iMac操作系统既可以运行arm64v8的镜像 ,又可以运行amd64的镜像?
A:iMac 操作系统可以运行 arm64v8 和 amd64 镜像是因为它是基于苹果公司的自家处理器架构,称为苹果公司架构(Apple Silicon)。苹果公司架构支持两种指令集:arm64 和 x86-64,因此 iMac 操作系统可以运行基于这两种指令集的镜像。不过,iMac 操作系统也可以通过使用虚拟机或者其他方式来运行其他架构的操作系统,从而能够运行其他架构的 Docker 镜像。


解决方案

重新拉去docker镜像,在Ubuntu x86 架构下运行amd64 镜像 下docker容器。

有关The requested image‘s platform (linux/arm64/v8) does not match the detected host platform (linux/amd的更多相关文章

  1. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  2. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  3. C# 到 Ruby sha1 base64 编码 - 2

    我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha

  4. ruby-on-rails - Rails 基本 Base64 身份验证 - 2

    我正在尝试复制此GETcurl请求:curl-D--XGET-H"Authorization:BasicdGVzdEB0YXByZXNlYXJjaC5jb206NGMzMTg2Mjg4YWUyM2ZkOTY2MWNiNWRmY2NlMTkzMGU="-H"Content-Type:application/json"http://staging.example.com/api/v1/campaigns在Ruby中,通过电子邮件+apikey生成身份验证:auth="Basic"+Base64::encode64("test@example.com:4c3186288ae23fd9661c

  5. ruby-on-rails - 在 rails 中显示 base64 编码的图像 - 2

    我正在向我的Controller发送一个base64图像并按原样保存它。现在我需要显示该图像。这是我要显示的内容,但未显示图像:"/>为了编码,我使用了这个java脚本函数encodeURIComponent();我的编码图像格式:data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/........ 最佳答案 你不需要解码base64应该可以 关于ruby-on-rails-在rails中显示base64编码的图像,我们在StackOve

  6. ruby-on-rails -/usr/local/lib/libz.1.dylib,文件是为 i386 构建的,它不是被链接的体系结构 (x86_64) - 2

    在我的mac上安装几个东西时遇到这个问题,我认为这个问题来自将我的豹子升级到雪豹。我认为这个问题也与macports有关。/usr/local/lib/libz.1.dylib,filewasbuiltfori386whichisnotthearchitecturebeinglinked(x86_64)有什么想法吗?更新更具体地说,这发生在安装nokogirigem时日志看起来像:xslt_stylesheet.c:127:warning:passingargument1of‘Nokogiri_wrap_xml_document’withdifferentwidthduetoproto

  7. ruby - libxml-ruby 无法在 x86_64 上加载 - 2

    我们在服务器端遇到libxml-rubygem的问题可能是因为它使用x86_64架构:$uname-aLinuxip-10-228-171-642.6.21.7-2.fc8xen-ec2-v1.0#1SMPTueSep110:25:30EDT2009x86_64GNU/Linuxrequire'libxml'LoadError:/usr/local/ruby-enterprise/lib/ruby/gems/1.8/gems/libxml-ruby-1.1.4/lib/libxml_ruby.so:invalidELFheader-/usr/local/ruby-enterprise/

  8. 【Linux操作系统】——网络配置与SSH远程 - 2

    Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好

  9. Linux磁盘分区中物理卷(PV)、卷组(VG)、逻辑卷(LV)创建和(LVM)管理 - 2

    文章目录一基础定义二创建逻辑卷2-1准备物理设备2-2创建物理卷2-3创建卷组2-4创建逻辑卷2-5创建文件系统并挂载文件三扩展卷组和缩减卷组3-1准备物理设备3-2创建物理卷3-3扩展卷组3-4查看卷组的详细信息以验证3-5缩减卷组四扩展逻辑卷4-1检查卷组是否有可用的空间4-2扩展逻辑卷4-3扩展文件系统五删除逻辑卷5-1备份数据5-2卸载文件系统5-3删除逻辑卷5-4删除卷组5-5删除物理卷六LVM逻辑卷缩容6-1缩容注意事项6-2标准缩容步骤一基础定义LVM,LogicalVolumeManger,逻辑卷管理,Linux磁盘分区管理的一种机制,建立在硬盘和分区上的一个逻辑层,提高磁盘分

  10. ruby - 如何在 Ruby 中获取 linux 系统信息 - 2

    如何在Ruby中获取linux系统(这必须适用于Fedora、Ubuntu等)的软件/硬件信息? 最佳答案 Chef背后的优秀人才,拥有一颗名为Ohai的优秀gemhttps://github.com/opscode/ohai以散列形式返回系统信息,例如操作系统、内核、规范、fqdn、磁盘、空间、内存、用户、接口(interface)、sshkey等。它非常完整,非常好。它还会安装命令行二进制文件(也称为ohai)。 关于ruby-如何在Ruby中获取linux系统信息,我们在Stack

随机推荐