Docker

【Docker】DockerfileのRUMとCMDの違い

  • cmd
  • Dockerfile
【Docker】DockerfileのRUMとCMDの違い

Let's share!

【Docker】DockerfileのRUMとCMDの違い 【Docker】DockerfileのRUMとCMDの違い

1.はじめに

「RUM」と「CMD」はDockerfile 内でコマンドを実行するために使われますが、目的と実行タイミングが異なります

2.RUN コマンド

(重要)コンテナのビルド時に1回だけ実行される!

・イメージの作成時に実行
「RUN」の結果はコンテナに保存
・イメージに含まれるためコンテナ起動時に実行されない(コンテナに適用された状態で起動)

次の「npm install」のように初回のみ(ビルド時)実行したいコマンドを指定します。


FROM node:18
WORKDIR /app

# 依存関係をインストール(イメージ作成時に実行)
RUN npm install

3.CMD コマンド

(重要)コンテナの起動時に実行される!

docker run でコンテナを起動するときに実行されるコマンドへ指定
CMD はデフォルトの実行コマンドなので、docker run の引数で上書き可能
・1つの Dockerfile に CMD1つしか指定できない最後の CMD が有効

次の「npm run dev」のようにコンテナの起動時に実行したいコマンドを指定します。


FROM node:18
WORKDIR /app

# 依存関係をインストール
RUN npm install

# コンテナ起動時に 「npm run dev」を実行
CMD ["npm", "run", "dev"]

4.まとめ

比較項目RUNCMD
実行タイミングイメージのビルド時
(1回だけ)
コンテナの起動時
(起動時毎回)
imageへの影響影響あり
(結果がimageに保存)
影響なし
(実行のみ)
上書き可能か                           不可能
(上書きするには再ビルド)
可能
docker run の引数で可能)

Let's share!

【Docker】DockerfileのRUMとCMDの違い 【Docker】DockerfileのRUMとCMDの違い

プロフィール

ニッキ

▲写真はペットのニッキ(チンチラ/げっ歯類)

こんにちは。RYUTOと申します。
医療職を経て、夢見るSE(システムエンジニア)として日々研鑽を積んでいます。
このサイトでは日々邁進する中で、その生きた証(ログ)を備忘録を残しています。
皆さんの参考になれたらうれしいです。