1. ホーム
  2. docker

[解決済み] Dockerの "cd "を実行しようとすると「実行ファイルが$PATHに見つからない: 不明」と表示される。

2022-03-02 01:19:03

質問

次のように書きました。 Dockerfile の引数で指定する)任意のコマンドを実行することになっています。 docker run ):

FROM ubuntu:20.04

RUN apt -y update && apt-get -y update 
RUN apt install -y python3 git

CMD bash

しかし、コマンドを渡そうとすると、例えば cd workspace 次のようになります。

C:\Users\user>docker run -it cloudbuildtoolset:latest cd workspace
docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "cd": executable file not found in $PATH: unknown.

何が間違っているのでしょうか?

マシン/ドッカー/その他を再起動するような提案はしないでください。

解決方法を教えてください。

cd 特殊組み込みユーティリティ POSIXシェル仕様の言語では、。 実行中のシェルの動作を変更するもので、スタンドアローンのプログラムではありません。 エラーメッセージの意味は、そのとおりです。 /bin/cd または同様の実行ファイルを実行することができます。

Dockerコンテナは1つのプロセスを実行した後、終了し、それまでの状態をすべて失うことを覚えておいてください。 コンテナの作業ディレクトリを変更するようなコマンドを実行しても、意味がない場合があります。

コンテナ内のプロセスを、別の作業ディレクトリで実行したい場合は docker run -w オプション

docker run -it \
  -w /workspace \
  cloudbuildtoolset:latest \
  the command you want to run

を追加するか、または同等の方法で WORKDIR ディレクティブを Dockerfile に追加してください。

また、シェルラッパーをメインコンテナプロセスとして起動することも可能です。 この場合、以下のようなビルトインコマンドを使用することができます。 cd しかし、使い方がより複雑で、クオートの問題が発生する可能性があります。

docker run -it cloudbuildtoolset:latest \
  /bin/sh -c 'cd /workspace && the command you want to run'