Ubuntu容器找不到shell脚本

时间:2017-10-29 17:32:43

标签: shell docker dash-shell

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

我的shell脚本很简单:

    #include <stdio.h>
    #include<string.h> //to use the string data type
#define IsLowerCase(c) (((c)>='a') && ((c)<='z'))
#define ToUpperCase(s) (IsLowerCase(s)? (s)-'a' + 'A': (s))

int main(void){
string str = "abcdefghijklmnopqrstuvwxyz";
string  *string = &str;
while(*string != '\0'){
*string = ToUpperCase(*string);
++string;
}

}

我的Dockerfile是:

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

我尝试过各种形式的ENTRYPOINT和CMD调用,但都没有。他们都失败了“没有这样的文件或目录”。当我将入口点更改为“/ bin / sh”并以交互方式启动容器时,我可以看到文件/usr/local/bin/shelltest.sh,并且它具有执行权限755,所以我不知所措解释为什么这不起作用。当入口点设置为“ls -l /usr/local/bin/shelltest.sh”时,以下是容器中文件的样子:

FROM ubuntu:14.04
WORKDIR /usr/local/bin
COPY shelltest.sh shelltest.sh
ENTRYPOINT ["/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

1 个答案:

答案 0 :(得分:2)

有时如果你在windows中编写shell脚本会出现类似的执行错误,请尝试使用dos2unix shelltest.sh或将其保存为Unix文件,而不是DOS。如果你不能手动(使用notepad ++,atom或sublime)尝试这个链接this link