c++ - 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;
}
解决方案
很可能是因为您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
推荐阅读
- docker - Redis 在 MULTI 中错误 EXPIRE
- laravel - 追加到已经获取的集合 - 雄辩
- c# - XPath如何选择具有相同值的子节点
- meshlab - 抽取网格子集
- apache-spark - 计算给定日期范围内窗口中的行数
- javascript - 向后递归
- node.js - 当我使用 OIDC 中间件 NPM 时,NodeJS 服务器不工作
- c++ - QT5 无法让不同的自定义上下文菜单适用于不同的表
- python - 有什么方法可以从 python 中的值中获取键?(字典)
- firebase-realtime-database - 实时数据库 - 如何在规则中使用 md5 散列?