社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

找不到Docker文件,但我可以看到它

Ryan • 5 年前 • 1407 次点击  

我正在尝试停靠一个应用程序,该应用程序有两个目录中的文件:

BOTFILES/
  ...
ChatScript/
  BINARIES/
    LinuxChatScript64
  DICT/
  ...

在我的dockerfile中,我分别复制每个目录。

FROM alpine:3.9


# https://github.com/ChatScript/ChatScript
RUN mkdir /bot
COPY ChatScript/ /bot/ChatScript
RUN chmod +x /bot/ChatScript/BINARIES/LinuxChatScript64

COPY BOTFILES/ /bot/BOTFILES

WORKDIR /bot/ChatScript

EXPOSE 1024

CMD ["./BINARIES/LinuxChatScript64"]

这个 chmod +x 工作正常,但当我尝试运行容器时,会出现以下错误:

standard_init_linux.go:207: exec user process caused "no such file or directory"

如果我将命令行更改为 /bin/ash ,我可以得到一个工作终端,看到 BINARIES/LinuxChatScript64 文件已存在并具有执行权限。但是,如果我尝试运行它,即使是从交互终端,我也会得到 /bin/ash: ./BINARIES/LinuxChatScript64: not found . 所以我能看到文件,我能 cat 文件,但是运行这些文件只会得到一个“找不到文件”错误。我错过了什么?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/45316
 
1407 次点击  
文章 [ 1 ]  |  最新文章 5 年前
John Kugelman
Reply   •   1 楼
John Kugelman    5 年前

如果它是二进制的,它是动态链接的吗?它可能缺少共享库依赖项。检查 ldd 在主机上查找列表。

如果是脚本,是否安装了脚本的解释器?例如,alpine没有预先安装bash,因此使用它的脚本将失败并显示“not found”:

$ docker run -it --rm alpine:latest /bin/ash
/ # echo '#!/bin/bash' > script
/ # chmod +x script
/ # ./script
/bin/ash: ./script: not found
/ # apk add bash
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
(1/5) Installing ncurses-terminfo-base (6.1_p20190105-r0)
(2/5) Installing ncurses-terminfo (6.1_p20190105-r0)
(3/5) Installing ncurses-libs (6.1_p20190105-r0)
(4/5) Installing readline (7.0.003-r1)
(5/5) Installing bash (4.4.19-r1)
Executing bash-4.4.19-r1.post-install
Executing busybox-1.29.3-r10.trigger
OK: 14 MiB in 19 packages
/ # ./script