docker exec で「executable file not found in $PATH」が出て実行できない
指定コマンドがコンテナ内に無い/PATH に無いと出る。
slim 系に bash が無いのが典型。
sh を使うか、必要なコマンドをイメージへ入れる。
公開:
要約
OCI runtime exec failed: ... executable file not found in $PATH は、docker exec で指定したコマンドが、コンテナ内に存在しないか PATH から見つからないときに出る。
最も多いのは alpine や -slim イメージに bash が無いケース。sh に変えるか、必要なコマンドをイメージへインストールすれば解決する。
よくある原因
- bash が無い: 軽量イメージ(alpine / distroless /
-slim)は bash を含まないことが多い。 - コマンド未インストール:
curlやvimなどをイメージに入れていない。 - 権限・配置: 自作スクリプトに実行権限が無い、または PATH の通らない場所にある。
解決策
1. sh を使う
docker exec -it web shbash が無いイメージでも sh(BusyBox の ash や dash)はたいてい使える。
まず sh で入れるか試す。
2. 必要なコマンドを入れる
# Alpine の場合
RUN apk add --no-cache bash
# Debian / Ubuntu 系の場合
RUN apt-get update && apt-get install -y --no-install-recommends bash \
&& rm -rf /var/lib/apt/lists/*恒常的に使うなら Dockerfile でインストールし、イメージに含める。
3. スクリプトの権限と配置を直す
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh自作スクリプトは実行権限を付け、/usr/local/bin など PATH の通る場所へ置く。
フルパス(/usr/local/bin/entrypoint.sh)で指定するのも確実。