次の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という単純なコマンドラインツールもあります。