Dockerにはコンテナ上でコマンドを実行させる命令としてRUN、CMD、ENTRYPOINTがあります。それぞれの違いについて調べてみました。
RUN
イメージファイルをビルドする時に実行されるコマンドです。アプリケーションのインストールとか設定ファイルの修正などに使います。
CMD
コンテナが起動される時に実行されるコマンドです。初期設定のデフォルトを指定したいときなどに使用することを想定しているようです。実行時に別のコマンドを指定することもできます。
ENTRYPOINT
コンテナが起動される時に実行されるコマンドです。CMDとは違い、別のコマンドを実行するように指定することは基本的には出来ません(オプション指定すれば出来る)。用途としてはコンテナ上で何かしらコマンドを実行してすぐ停止する実行ファイルのような使い方を想定しているようです。