新手刚刚接触 docker,Linux 总不能出现这么弱智的问题吧,那这么玄学的现象只能解释为 docker 问题。
如果用docker exec
OCI runtime exec failed: exec failed: container_linux.go:370: starting container process caused: no such file or directory: unknown
下载了一个CentOS镜像,文件可以被执行了(报错在预料之中)
sh-4.4# ./paraview
/root/ParaView-5.9.0-MPI-Linux-Python3.8-64bit/bin/paraview-real: error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory
所以结论就是这个镜像用的Alpine Linux有毒。我大E了,还真是Linux的弱智问题。
1
nvkou 2021-02-11 04:53:10 +08:00 via Android
我看到-x
|
2
noqwerty 2021-02-11 04:59:23 +08:00 via Android
你这个难道不是 paraview 文件夹里面有一个也叫 paraview 的文件?
|
3
codehz 2021-02-11 05:07:09 +08:00
(not found 多半是因为你没把依赖的共享库给加进去)
|
8
codehz 2021-02-11 05:31:05 +08:00
(你直接复制 binary 肯定会炸啊,你需要到 alpine 上重新编译链接才能跑,不过 alpine 应该只是特殊需求才会用到)
|
9
xuegy OP @codehz 搞不懂为什么这个人要在 Alpine 上做镜像,实现了 OpenGL support 又如何? binary 都无法执行,纯属浪费别人的时间。想开个 issue 骂他...
|
10
codehz 2021-02-11 05:48:12 +08:00
@xuegy #9 你不能跑是你的事,按正常操作就不是直接丢设计为 glibc 环境的 binary 的,准确来说,docker 就应该把构建的步骤写在 dockerfile 里(然后用 multi pass 消除多余的层),而不是直接把生成的文件放进去。
|
11
xuegy OP @codehz 我明白你的意思。我是说这个镜像本身就不该用 apline 做,因为 Linux 上大部分有生产力的三维软件都是闭源或开源但编译困难,正常情况下都是直接拷 binary 的。
|
13
Slartibartfast 2021-02-11 08:26:57 +08:00 via iPhone
不会吧不会吧,不会真有人认为 Linux 可执行文件直接兼容所有发行版吧。
别说所有发行版了,你动态连接库少装一个也跑不出来啊。 |