V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xuegy
V2EX  ›  Docker

Docker 打不开可执行文件

  •  
  •   xuegy · 2021-02-11 04:50:40 +08:00 · 1402 次点击
    这是一个创建于 1380 天前的主题,其中的信息可能已经有所发展或是发生改变。

    新手刚刚接触 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
    
    第 1 条附言  ·  2021-02-11 05:24:35 +08:00

    下载了一个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的弱智问题。

    nvkou
        1
    nvkou  
       2021-02-11 04:53:10 +08:00 via Android
    我看到-x
    noqwerty
        2
    noqwerty  
       2021-02-11 04:59:23 +08:00 via Android
    你这个难道不是 paraview 文件夹里面有一个也叫 paraview 的文件?
    codehz
        3
    codehz  
       2021-02-11 05:07:09 +08:00
    (not found 多半是因为你没把依赖的共享库给加进去)
    xuegy
        4
    xuegy  
    OP
       2021-02-11 05:11:46 +08:00
    @noqwerty 这个软件我用了好几年了,怎么运行我心里还是有点逼数的
    xuegy
        5
    xuegy  
    OP
       2021-02-11 05:15:04 +08:00
    @codehz 那应该会显示找不到 xx.so 吧?不能直接说这个文件找不到啊
    codehz
        6
    codehz  
       2021-02-11 05:24:13 +08:00
    @xuegy #5 还有链接器本身啊,就是 ld-linux 那个
    xuegy
        7
    xuegy  
    OP
       2021-02-11 05:25:16 +08:00
    @codehz 被 github 上的镜像给坑了...
    codehz
        8
    codehz  
       2021-02-11 05:31:05 +08:00
    (你直接复制 binary 肯定会炸啊,你需要到 alpine 上重新编译链接才能跑,不过 alpine 应该只是特殊需求才会用到)
    xuegy
        9
    xuegy  
    OP
       2021-02-11 05:40:12 +08:00
    @codehz 搞不懂为什么这个人要在 Alpine 上做镜像,实现了 OpenGL support 又如何? binary 都无法执行,纯属浪费别人的时间。想开个 issue 骂他...
    codehz
        10
    codehz  
       2021-02-11 05:48:12 +08:00
    @xuegy #9 你不能跑是你的事,按正常操作就不是直接丢设计为 glibc 环境的 binary 的,准确来说,docker 就应该把构建的步骤写在 dockerfile 里(然后用 multi pass 消除多余的层),而不是直接把生成的文件放进去。
    xuegy
        11
    xuegy  
    OP
       2021-02-11 05:57:59 +08:00
    @codehz 我明白你的意思。我是说这个镜像本身就不该用 apline 做,因为 Linux 上大部分有生产力的三维软件都是闭源或开源但编译困难,正常情况下都是直接拷 binary 的。
    noqwerty
        12
    noqwerty  
       2021-02-11 06:19:21 +08:00
    @xuegy #4 的确是我错了,之前没注意到 ls 后面加上当前文件夹下的文件名也能正常显示
    Slartibartfast
        13
    Slartibartfast  
       2021-02-11 08:26:57 +08:00 via iPhone
    不会吧不会吧,不会真有人认为 Linux 可执行文件直接兼容所有发行版吧。

    别说所有发行版了,你动态连接库少装一个也跑不出来啊。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2853 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:05 · PVG 22:05 · LAX 06:05 · JFK 09:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.