Open1
Dockerfile の CMD を文字列で書く場合と配列で書く場合の違いについて
文字列(Execフォーム)
CMD [ "echo", "$PATH" ]
配列で書く場合(シェルフォーム)
CMD "echo $PATH"
結論
- Exec フォームの場合シェルを介在せずに実行される
- 環境変数を参照されず、ただの文字列として解釈される
- Docker公式ではExecフォームを推奨している
Execフォームにて環境変数を参照する場合は
CMD [ "sh", "-c", "echo $PATH" ]
参考記事