dockerでスクリプトファイルを実行できません。そのファイルやディレクトリはありません。

dockerでスクリプトファイルを実行できません。そのファイルやディレクトリはありません。

次のDockerfileがあります。

FROM alpine

COPY setup.sh /setup.sh

CMD ["/setup.sh"]

私のsetup.shは次のようになります。

#!/bin/sh

echo "hello world"

次のコマンドを実行してみてください。

docker build .
docker run --name test 61230f9f45ad

返されるエラーは次のとおりです。

standard_init_linux.go:195: exec user process caused "no such file or directory"

Windows 10 LTSBでPowershellを使用していますが、dockerのバージョンが17.12.0-ce, build c97c6d6

ベストアンサー1

たぶんWindowsスタイルの行末が壊れている可能性があります。 Windows行の末尾に保存しましたが、Unixスタイルで読み取ったときのファイルの外観は次のとおりです。

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

shebang(#!)を解釈すると、追加のexecキャリッジリターン文字(CR、、、\rで示される^M)が表示されますが、見つかりません/bin/sh^M

$ exec ./setup.sh
bash: setup.sh: /bin/sh^M: bad interpreter: No such file or directory 

Unixスタイルの行末を使用してファイルを保存します。 Windowsでは、まともなテキストエディタ(Sublime Text、Notepad ++、すべてのIDEなど)を使用してこれを行うことができます。また、期待どおりに正確に実行するdos2unixという単純なコマンドラインツールもあります。

おすすめ記事