2017-10-29 11 views
1

私はDockerを使い慣れていないので、シェルスクリプトを実行するUbuntuコンテナの簡単な例を試しています。私はDocker 17.09.0-ceでWindows 10を使用しています。Ubuntuのコンテナがシェルスクリプトを見つけられない

私のシェルスクリプトは単純です:

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

私Dockerfileは次のとおりです。私は、様々なENTRYPOINTとCMD呼び出しの形式、およびなしの仕事をしようとした

FROM ubuntu:14.04 
WORKDIR /usr/local/bin 
COPY shelltest.sh shelltest.sh 
ENTRYPOINT ["/usr/local/bin/shelltest.sh"] 

。それらはすべて "そのようなファイルまたはディレクトリ"で失敗します。エントリポイントを "/ 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

時々、あなたは窓にあなたのシェルスクリプトを記述する場合は、そのような実行エラーを取得し、dos2unix shelltest.shを使用するか、Unixファイル、ないDOSとして保存してみてください。手動で(notepad ++、アトムまたは昇華を使用して)できない場合は、このリンクを試してくださいthis link

+0

ファイルにはすでに「x」権限(755)があります。 – Alan

+1

シェルスクリプトをウィンドウに書き込むと、そのような奇妙なエラーが発生することがあります。 'dos2unix shelltest.sh'を使用するか、DOSなしでUnixファイルとして保存してみてください。この種のツールにアクセスできない場合は、[このリンク](http://newline.nadav.org)を試してください –

+0

これは問題であるため、この情報であなたの回答を更新してください!私はメモ帳++を使ってシェルスクリプトをUnixの行末で保存しました。そして、コンテナはそのスクリプトパスに設定されたENTRYPOINTで正常に実行されます。ありがとうございました! – Alan

関連する問題