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

Rie*_*der 89 linux ubuntu linux-kernel docker docker-machine

背景

我正在使用 docker 来做一个学校项目。具体来说,我提取了一个 ubuntu 映像,这是系统配置:

在此输入图像描述

然后我登录到 docker 容器(ubuntu)并设置elasticsearch。当我尝试跑步时

./bin/elasticsearch
Run Code Online (Sandbox Code Playgroud)

我在 docker 容器的终端内收到以下错误

/lib64/ld-linux-x86-64.so.2: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我主要有两个困惑:

  1. 那有什么意思?
  2. 怎么解决呢?

mis*_*mer 187

如果您在 M1 MacBook 上运行此程序,则您可能正在运行 ubuntu 的本机 Arm 映像,而不是模拟的 x86 映像。如果您尝试安装的elasticsearch发行版适用于x86_64,那么它会尝试链接到x86-64-native ld.so,这当然不存在于不同的平台上。

如果他们提供了专门为arm平台提供的软件包,则安装该软件包,或者 - 更有可能 - 显式运行 docker 作为模拟的 x86_64 平台:

docker run --platform linux/x86_64 <image>
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢,我在 M1 上使用“docker build”命令遇到了同样的问题。`docker build --platform linux/x86_64` 有帮助! (48认同)
  • *许多*小时的搜索,终于找到了这个,它是拼图中缺失的一块。我的用例有点不同,但最终的根本原因相同。 (9认同)
  • 当然它可以工作,但是它非常慢,因为它使用了仿真:( (2认同)

tsu*_*suz 31

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

services:
  my-app:
    platform: linux/x86_64
Run Code Online (Sandbox Code Playgroud)


Tee*_*muK 5

不知道你在容器中运行什么,但对我来说,原因很简单,因为包(Prisma https://github.com/prisma/prisma/issues/8478#)没有找到 openssl 包并将它们安装在alpine映像上失败即使openssl手动安装。

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