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

问题描述 投票:0回答:5

背景

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

enter image description here

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

./bin/elasticsearch

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

/lib64/ld-linux-x86-64.so.2: No such file or directory

我有两个主要的困惑:

  1. 这是什么意思?
  2. 如何解决?
linux docker ubuntu linux-kernel docker-machine
5个回答
196
投票

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

如果他们提供了专门针对arm平台的软件包,或者 - 更有可能 - 明确运行docker作为模拟的x86_64平台:

docker run --platform linux/x86_64 <image>

38
投票

对于 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,构建时间增加了 200 秒,使用
linux/x86_64


4
投票

完成@misnomer 的回答,我什至无法构建图像。 如果是这种情况,只需添加来自

此来源
FROM --platform=linux/x86_64 ...。例如:
FROM --platform=linux/x86_64 python:slim ...


0
投票

在这种情况下,我使用

alpine:latest
而不是 ubuntu。

对我有用的是将

libc6-compat
添加到我的 Dockerfile 中:

RUN apk add libc6-compat

Alpine 使用 musl,它是 “从头开始设计用于静态链接”。 但是

/lib64/ld-linux-x86-64.so.2
是来自gcc/glibc的动态链接库。

现在我的应用程序在我的 Apple Silicon Mac 上的 alpine 中运行良好,没有出现

rosetta error: failed to open elf at /lib64/ld-linux-x86-64.so.2
错误

© www.soinside.com 2019 - 2024. All rights reserved.