/lib64/ld-linux-x86-64.so.2: 没有此文件或目录错误。

86

背景

我正在使用Docker完成一项学校项目。具体来说,我拉取了一个Ubuntu镜像,并且以下是系统配置:

进入图像描述

然后我登录到Docker容器(Ubuntu)并安装了Elasticsearch。当我尝试运行时:

./bin/elasticsearch
在Docker容器的终端中,我收到以下错误。
/lib64/ld-linux-x86-64.so.2: No such file or directory

我有两个主要的困惑:

  1. 那是什么意思?
  2. 如何解决它?

请展示您正在运行的确切步骤,并从命令行中复制和粘贴。将命令运行、输出作为格式化文本而不是截图进行发布。这应该包括启动Ubuntu和安装/设置Elasticsearch所采取的步骤。 - BMitch
4个回答

182

如果您正在M1 Macbook上运行此程序,则可能是在本地Arm图像的Ubuntu上运行,而不是模拟的x86图像。如果您要安装的Elasticsearch发行版是针对x86_64的,则尝试链接到x86-64本机ld.so,当然不会存在于不同平台上。

如果提供了arm平台的包,请专门安装该包,否则更可能的是明确将docker作为模拟的x86_64平台运行:

docker run --platform linux/x86_64 <image>

8
搜索了很多个小时,最终找到了它,这是拼图中缺失的那一块。我的使用情况有所不同,但最终原因相同。 - matwer1
46
非常感谢,我在 M1 上使用 docker build 命令遇到了相同的问题。使用 docker build --platform linux/x86_64 命令解决了问题! - jzavisek
1
我也是。我对Mac世界还很陌生,你的答案节省了我很多时间去摸索。谢谢。 - paulyang0125
1
我的天呐,这就是答案。非常感谢!我也在使用M1 Pro。 - Spock
2
肯定它可以工作,但由于使用仿真技术,速度实在慢得要命 :( - IceFire
我也一样,不得不使用仿真。 - Yogesh Jog

29

对于docker-compose,根据文档,添加platform: linux/x86_64

services:
  my-app:
    platform: linux/x86_64

5

不清楚你在容器中运行的是什么,但对于我来说,原因很简单,因为一个软件包(Prisma https://github.com/prisma/prisma/issues/8478#)找不到openssl包,在alpine镜像上安装它们失败,即使手动安装openssl也不行。

通过切换到slim镜像并使用apt-get update && apt-get -y install openssl命令安装openssl来解决问题。我强烈建议不要更改平台,因为在我的M1上,使用linux/x86_64构建时间增加了200秒。


3

补充@misnomer的答案,我甚至不能构建镜像。 如果是这种情况,请添加FROM --platform=linux/x86_64 ...,来自此来源。例如:FROM --platform=linux/x86_64 python:slim ...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接