できない.dev

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 に変えるか、必要なコマンドをイメージへインストールすれば解決する。

よくある原因

  1. bash が無い: 軽量イメージ(alpine / distroless / -slim)は bash を含まないことが多い。
  2. コマンド未インストール: curlvim などをイメージに入れていない。
  3. 権限・配置: 自作スクリプトに実行権限が無い、または PATH の通らない場所にある。

解決策

1. sh を使う

docker exec -it web sh

bash が無いイメージでも 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)で指定するのも確実。

この記事は役立ちましたか?