首页 > 系统相关 >docker build过程中遇到错误qemu-x86_64: Could not open '/lib64/ld-linux-x86-64.so.2': No such file

docker build过程中遇到错误qemu-x86_64: Could not open '/lib64/ld-linux-x86-64.so.2': No such file

时间:2023-08-29 19:44:49浏览次数:42  
标签:amd64 64 ARM64 linux 镜像 open x86

Removing intermediate container 70af516d5d6b
 ---> a69229847153
Step 5/6 : RUN GO111MODULE="on" go get github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb; ln -s $(go env GOPATH)/bin/jb /usr/bin/jb
 ---> Running in 13545862fffe
qemu-x86_64: Could not open '/lib64/ld-linux-x86-64.so.2': No such file or directory
qemu-x86_64: Could not open '/lib64/ld-linux-x86-64.so.2': No such file or directory
Removing intermediate container 13545862fffe

我在M1 Max MacBook Pro笔记本电脑上也遇到了同样的问题,试图从公司的仓库中进行docker构建。这应该是一个相当常见的路径,但我可能是唯一一个使用ARM64 M1 "Apple Silicon" Mac的人(我们是一个小公司)。然而,我发现对我的情况的解决方案与OP的解决方案完全相反,那就是在docker文件的FROM行中添加--platform=linux/amd64。

示例:

FROM --platform=linux/amd64 ubuntu:20.04

否则,它开始时使用的是一个ARM64镜像,而我并没有意识到这一点,但在Dockerfile的后面,构建尝试安装和执行为x86_64编译的代码。通过请求基础镜像为linux/amd64开始构建过程,然后基础镜像会有/lib64/ld-linux-x86-64.so.2。这可能意味着所有的东西都是通过qemu-x86_64在ARM64 CPU上模拟为x86_64。所以,如果你有从ARM64镜像开始的选项,并且可以在构建时在容器内编译任何你不能安装为ARM64二进制文件的软件,当你稍后在基于M1的Mac上运行容器时,它可能会运行得更快。对于这种情况,我现在还不能亲自尝试。

在Dockerfile中,FROM 指令用于指定基础镜像,也就是构建新镜像时所基于的镜像。ubuntu:20.04 是基础镜像的名称和标签。

--platform=linux/amd64 是一个可选的参数,用于指定目标平台的OS和架构。在这个上下文中,它用于确保即使在ARM64架构的机器上,也从amd64架构的Ubuntu 20.04镜像开始构建。

这个语法在Docker的某些版本中被引入,特别是在Docker开始支持多平台镜像时。这允许开发者在一个架构上为另一个架构构建镜像,例如在ARM64上为amd64构建或反之。

简而言之,FROM --platform=linux/amd64 ubuntu:20.04 这行指令告诉Docker,无论在哪个平台上构建,都要使用amd64架构的Ubuntu 20.04镜像作为基础镜像。

标签:amd64,64,ARM64,linux,镜像,open,x86
From: https://www.cnblogs.com/tangjicheng/p/17665702.html

相关文章

  • Lnton羚通视频分析算法平台在OpenCV 中如何进行实时物体识别
    要实现OpenCV的实时物体识别,你可以使用以下步骤:步骤1:导入必要的库首先,导入必要的库,包括OpenCV和相关的库:importcv2 步骤2:加载预训练模型和配置文件在进行物体识别之前,需要加载预训练的模型和相关的配置文件。你可以从OpenCV的GitHub页面(https://github.com/openc......
  • OpenHarmony设备截屏的5种方式
     本文转载自《OpenHarmony设备截屏的5种方式》,作者westinyang 目录● 方式1:系统控制中心● 方式2:OHScrcpy投屏工具 `推荐`● 方式3:DevEcoStudio截屏功能● 方式4:hdc shell snapshot_display● 方式5:hdc shell wukong● 持续关注演示视频:https://www.bil......
  • Swagger3 (OpenAPI3)自定义参数对象渲染设置ModelConverter
    Swagger2设置方法以SpringDataJPA里的分页参数Pageable为例,在使用Swagger2的时候,可以通过自定义AlternateTypeRule,修改参数对象的参数渲染;如下/***分页参数实体类参数转换,让swagger显示正常的传参**@paramresolver*@return*/@BeanpublicAlternateTy......
  • CF1864D Matrix Cascade
    思路第一时间想到的是暴力,因为同一行的互不影响,所以第一行的\(1\)一定都需要操作,然后把后续的状态更新,再操作第二行的所有的\(1\),但是很可惜是\(O(n^4)\)的复杂度,必然会TLE。所以思考其他的办法,考虑到可以统计有多少操作更改了这个位置的状态,所以可以使用一个类似前缀和的......
  • CF1864C Divisor Chain
    思路刚拿到题,想了一些方法但都被推翻了,在这里列举出来,并给出反例:每次减去最小的因数,反例:\(1024\)等形如\(a^k\)的数,每次都会减去\(a\)导致\(a\)的出现次数超过\(2\)次。每次减去大于等于\(\sqrtx\)的因子,\(x\)为目前的数,并特判指数的情况,反例:\(35\)等由两个......
  • CF1864B Swap and Reverse
    思路刚看懂题意时感觉很难,但是观察样例后,大胆猜测,\(k\)为偶数时,直接排序;\(k\)为奇数时,分奇偶位排序。快速了写了程序,一交果然AC。其实很简单,这里给出证明:首先,操作\(1\)保证了奇数位和偶数位上的字符可以任意变动顺序。然后,操作\(2\)当\(k\)为偶数时,可以改变一个字符......
  • CF1864A Increasing and Decreasing
    思路首先,给定了一个序列的首项\(a_1\)和末项\(a_n\)以及项数\(n\),要求构造一个严格递增,且差严格递减的序列。因为是构造题,所以可以随便造,考虑差严格递减,所以从后往前构造比较合理。因为严格递增,所以差至少为\(1\),所以\(a_{n-1}\)就构造成\(a_n-1\),\(a_{n-2}\)就构造......
  • opencv-python报错:Exception: Not found: 'python/cv2/py.typed'
    报错:self).run_setup(setup_script=setup_script)File"/tmp/pip-build-env-zsqslesq/overlay/lib/python3.6/site-packages/setuptools/build_meta.py",line158,inrun_setupexec(compile(code,__file__,'exec'),locals())File&qu......
  • openGauss学习笔记-53 openGauss 高级特性-Ustore
    openGauss学习笔记-53openGauss高级特性-UstoreUstore存储引擎,又名In-placeUpdate存储引擎(原地更新),是openGauss内核新增的一种存储模式。此前的版本使用的行存储引擎是AppendUpdate(追加更新)模式。追加更新对于业务中的增、删以及HOT(HeapOnlyTuple)Update(即同一页面内更......
  • 【OGF、Lucas】P4640 [BJWC2008] 王之财宝
    显然,就是有一些的OGF为\(\frac{1}{1-x}\),有一些为\(\frac{1-x^{b_i+1}}{1-x}\)。乘起来即可。发现不太好算分子,考虑枚举哪些算了。然后我们考虑\(2^t\)的枚举子集。然后直接乘上对应的\(b_i+1\)的系数即可。然后我们要求分母第\(i\)位的系数,这个很典,\(i\)......