运行二进制文件时没有这样的文件或目录,尽管二进制文件存在

运行二进制文件时没有这样的文件或目录,尽管二进制文件存在

我正在安装minikube作为下面的一部分Dockerfile

FROM jenkins/jnlp-agent-alpine
RUN curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && \
        install minikube-linux-amd64 /home/jenkins/minikube -o jenkins -g jenkins -m 777 && \         
        rm minikube-linux-amd64
    

构建并运行映像后:

$docker build -t app:latest .
$docker run -it app:latest bash

#minikube` binary exists

bash-5.1$ls -l minikube 
-rwxrwxrwx    1 jenkins  jenkins   74953166 Jul 19 15:44 minikube

#however running the binary `minikube` returns `No such file or directory` error:

bash-5.1$ ./minikube 
bash: ./minikube: No such file or directory

作为调试的一部分,我将jenkins用户设为 的所有者minikube并将其权限设置为777,但仍然没有帮助。

为什么No such file or directory会出现错误以及如何解决?

答案1

minikube二进制文件链接到 GNU C 库,但您的图像基于 Alpine,它使用穆斯勒。运行minikube失败,因为它指定的动态链接器 ( /lib64/ld-linux-x86-64.so.2) 不存在。

如果您想使用minikube,您需要找到基于 musl 的构建(或静态构建),或者切换到使用 GNU C 库的基础映像。

答案2

我可以在容器内使用以下命令运行 minikube:

/lib/ld-musl-x86_64.so.1 minikube

基于回答

解释在@Stephen Kitt 的回答中

相关内容