Bash

執行二進製文件時沒有這樣的文件或目錄,儘管二進製文件存在

  • July 19, 2022

我正在安裝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

作為調試的一部分,我將jenkinsuser owner ofminikube設置為 ,並將其權限設置為777,儘管它仍然沒有幫助。

為什麼會No such file or directory彈出錯誤以及如何解決?

minikube二進製文件與 GNU C 庫連結,但您的圖像基於使用musl的 Alpine 。執行minikube失敗,因為它指定的動態連結器 ( /lib64/ld-linux-x86-64.so.2) 不存在。

如果您想使用minikube,您需要找到基於 musl 的建構(或靜態建構),或者切換到使用 GNU C 庫的基礎映像。

我能夠在容器內使用以下命令執行 minikube:

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

解釋在@Stephen Kitt 的回答中

引用自:https://unix.stackexchange.com/questions/710445