首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到Docker文件,但我可以看到它

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

Stack Overflow用户
提问于 2019-06-05 00:25:09
回答 1查看 47关注 0票数 0

我正在尝试Docker化一个应用程序,该应用程序的文件位于两个目录中:

代码语言:javascript
复制
BOTFILES/
  ...
ChatScript/
  BINARIES/
    LinuxChatScript64
  DICT/
  ...

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

代码语言:javascript
复制
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运行正常,但是当我尝试运行容器时,我得到了以下错误:

代码语言:javascript
复制
standard_init_linux.go:207: exec user process caused "no such file or directory"

如果我将CMD行更改为/bin/ash,我可以获得一个正常工作的终端,并看到BINARIES/LinuxChatScript64文件就在那里,并且具有执行权限。但是,如果我尝试运行它,即使是从交互式终端,我也会得到/bin/ash: ./BINARIES/LinuxChatScript64: not found。所以我可以看到这个文件,我可以找到这个文件,但是运行这些文件只会得到一个找不到文件的错误。我遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2019-06-05 00:32:34

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

如果是脚本,是否安装了脚本的解释器?例如,高山没有预装bash,所以使用它的脚本将失败,并显示“找不到”:

代码语言:javascript
复制
$ docker run -it --rm alpine:latest /bin/ash
/ # echo '#!/bin/bash' > script
/ # chmod +x script
/ # ./script
/bin/ash: ./script: not found
代码语言:javascript
复制
/ # 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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56447857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档