Ubuntu容器找不到shell脚本。

4

我是一名Docker新手,正在尝试一个简单的Ubuntu容器示例,该容器运行一个shell脚本。我使用的是Windows 10和Docker 17.09.0-ce。

我的shell脚本非常简单:

#!/bin/sh
echo "hello world!"

我的Dockerfile如下:
FROM ubuntu:14.04
WORKDIR /usr/local/bin
COPY shelltest.sh shelltest.sh
ENTRYPOINT ["/usr/local/bin/shelltest.sh"]

我尝试了各种ENTRYPOINT和CMD的调用方式,但都无法生效。它们都会出现“找不到文件或目录”的错误。当我将入口点更改为“/bin/sh”并以交互模式启动容器时,可以看到/usr/local/bin/shelltest.sh文件,并且它有755的执行权限,所以我不知道为什么这不起作用。当入口点设置为“ls -l /usr/local/bin/shelltest.sh”时,该文件在容器中的样子如下:
ENTRYPOINT ["ls", "-l", "/usr/local/bin/shelltest.sh"]

d:\Dev\Docker\shelltest>docker run shelltest 
-rwxr-xr-x 1 root root 32 Oct 29 16:32 /usr/local/bin/shelltest.sh

我错过了什么?

以下是我尝试过的一些方法:

ENTRYPOINT ["/usr/local/bin/shelltest.sh"]

d:\Dev\Docker\shelltest>docker run shelltest
standard_init_linux.go:185: exec user process caused "no such file or directory"


ENTRYPOINT ["shelltest.sh"]

d:\Dev\Docker\shelltest>docker run shelltest
standard_init_linux.go:185: exec user process caused "no such file or directory"


CMD ["/usr/local/bin/shelltest.sh"]

d:\Dev\Docker\shelltest>docker run shelltest
standard_init_linux.go:185: exec user process caused "no such file or directory"
1个回答

3
有时候,如果您在Windows上编写shell脚本,可能会出现执行错误,尝试使用dos2unix shelltest.sh或将其保存为Unix文件,而不是DOS。如果您无法手动完成此操作(使用notepad ++,atom或sublime),请尝试使用此链接this link

文件已经有“x”权限(755),我已经将文件属性输出添加到我的问题中。 - Alan
1
有时候,如果你在Windows中编写shell脚本,会出现奇怪的错误,尝试使用dos2unix shelltest.sh或将其保存为Unix文件,而不是DOS。如果你没有访问那种工具的权限,请尝试这个链接 - Mr. bug
请更新您的答案,加入这些信息,因为那就是问题所在!我使用Notepad++将shell脚本保存为Unix行结尾,并且现在容器成功执行,ENTRYPOINT设置为该脚本路径。谢谢! - Alan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接