首页 > 解决方案 > Alpine Image standard_init_linux.go:207: exec 用户进程导致“没有这样的文件或目录”

问题描述

我正在尝试运行一个基于 alpine 的容器,它将在启动时运行一个 hello world C++ 程序。但是,我 standard_init_linux.go:207: exec user process caused "no such file or directory"在运行容器时遇到错误。

ls -al对容器进行了检查以检查文件是否具有正确的权限。可执行文件(命名)存在于具有权限test的根目录中。-rwxrwxr-x

这是我的 Dockerfile。

FROM alpine:latest
ADD test /
ENTRYPOINT ["/test"]

有人可以帮助我确定问题所在吗?谢谢 !

编辑:我在 Ubuntu 18.04 上编译了我的 .cpp 文件以生成可执行文件。 g++ -o test test.cpp

测试.cpp:

#include <iostream>

using namespace std;

int main()
{
   cout<<"Hello World"<<endl;
   return 0;
}

标签: c++dockerdockerfilealpine

解决方案


很可能是因为您test在非 alpine 操作系统上构建了二进制文件,然后尝试在 alpine 中运行它。

例如,如果您检查二进制文件的依赖关系,您可能会找到下一个(根据您的系统,这可能会有所不同):

$ ldd test
linux-vdso.so.1
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6
/lib64/ld-linux-x86-64.so.2

但是在 alpine 中,它不使用 glibc,它使用musl libc

所以建议您直接在 alpine 中构建它,或者对于简单的应用程序,使用 next:

g++ -o test -static test.cpp

推荐阅读