
私はdockerfilesについて学ぶためにオンラインチュートリアルを受講していました。クイズの質問がありました:
Dockerfile WORKDIR コマンドはディレクトリを変更します:
- Dockerfileの残りの部分のみ
- 完成した画像でも同様です。
私の選択(間違い)は、「1. Dockerfile の残りの部分のみ」でした。
誰か、2 番目の (正しい) 答えが役立つ例を挙げて私を訂正してもらえませんか?
答え1
特定のディレクトリからコードを実行する必要があるケースは数多くあります。実行中のアプリケーションが現在のディレクトリ内のファイルを操作する、アプリケーションが現在のディレクトリ内の構成を期待する、アプリケーションが現在のディレクトリ内に配置されているなどの理由が考えられます。WORKDIR
イメージ作成者がこれを設定できるため、コンテナを実行するユーザーは心配する必要がありません。
たとえば、私が以前経験したユースケースの 1 つは、現在のディレクトリ内のファイルを操作するアプリケーションを使用して Docker コンテナを作成することです。設定しないと、ボリュームを場所にバインドしてから、すべてのコマンドWORKDIR
を実行する必要があります。cd /location
docker -v $PWD:/location someimage "cd /location; somecommand"
WORKDIR
を設定すると、/location
以下を削除できますcd
:
docker -v $PWD:/location someimage somecommand
それははるかに便利です。