Dockerfile の RUN と CMD の違いについて

コンテナ

ググったらたくさんでてきますが、一応自分用の備忘録として残しておきます。

概要

RUNCMD も両方とも Dockerfile に記載する命令です。

違いは、以下の通りという認識です。

  • RUN
    • イメージ作成時に実行される。つまり、docker build コマンドでイメージを作成したとき、RUN で実行されたものがで出来上がったイメージに反映された状態になる
  • CMD
    • コンテナの起動時に実行される。つまり、イメージの中には入っておらずdocker run コマンド実行時に実行される

その他の違い

大きな違いとして、 CMD は最後の1行のみが実行されるという点があります。

これが曲者で、自分は結構ハマりました。

https://sleepless-se.net/2018/05/26/docker%E3%81%A7%E8%A4%87%E6%95%B0cmd%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/

コメント

タイトルとURLをコピーしました