私は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"
ファイルにはすでに「x」権限(755)があります。 – Alan
シェルスクリプトをウィンドウに書き込むと、そのような奇妙なエラーが発生することがあります。 'dos2unix shelltest.sh'を使用するか、DOSなしでUnixファイルとして保存してみてください。この種のツールにアクセスできない場合は、[このリンク](http://newline.nadav.org)を試してください –
これは問題であるため、この情報であなたの回答を更新してください!私はメモ帳++を使ってシェルスクリプトをUnixの行末で保存しました。そして、コンテナはそのスクリプトパスに設定されたENTRYPOINTで正常に実行されます。ありがとうございました! – Alan