standard_init_linux.go: exec user process caused 'no such file or directory'
DockerでENTRYPOINTやCMDの実行ファイルが見つからない場合のエラー
概要
Dockerコンテナ起動時に、DockerfileのENTRYPOINTやCMDで指定した実行ファイルが見つからない、または実行できない場合に発生するエラーです。
エラーメッセージ
standard_init_linux.go:211: exec user process caused "no such file or directory"
または
exec /entrypoint.sh: no such file or directory
原因
- ファイルが存在しない: COPYやADDでファイルがコピーされていない
- 改行コードの問題: Windowsの改行コード(CRLF)がLinuxで認識されない
- シェバンの問題:
#!/bin/bashのシェルが存在しない - パスの問題: 相対パスや絶対パスの指定ミス
- 実行権限がない: ファイルに実行権限が付与されていない
解決策
1. ファイルの存在確認
| |
| |
2. 改行コードをLFに変換
| |
| |
3. シェバンを確認・修正
| |
| |
4. exec形式を使用
| |
5. 絶対パスを使用
| |
6. マルチステージビルドの場合
| |
7. デバッグ方法
| |
よくある間違い
.dockerignoreでファイルを除外してしまっている- WindowsでGitがCRLFに変換する設定になっている
- alpineイメージでbashが存在しないのに
#!/bin/bashを使う COPY . .の後にファイルを上書きしてしまう
関連エラー
参考リンク
Docker の他のエラー
この記事は役に立ちましたか?