【问题标题】:Alpine Image standard_init_linux.go:207: exec user process caused "no such file or directory"Alpine Image standard_init_linux.go:207: exec 用户进程导致“没有这样的文件或目录”
【发布时间】:2019-08-12 04:40:04
【问题描述】:

我正在尝试运行一个基于 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

test.cpp:

#include <iostream>

using namespace std;

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

【问题讨论】:

  • 什么是test?你是如何创建它的?请提供minimal reproducible example
  • 抱歉,我添加了一个编辑来重现错误。请看一看。

标签: c++ docker dockerfile alpine


【解决方案1】:

很可能是因为您在非 alpine 操作系统上构建了 test 二进制文件,然后尝试在 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

【讨论】:

    猜你喜欢
    • 2019-09-19
    • 1970-01-01
    • 2020-09-11
    • 2018-12-07
    • 2020-10-25
    • 2020-08-03
    • 2019-01-01
    • 2021-10-23
    • 1970-01-01
    相关资源
    最近更新 更多