Dockerfile内で頻繁に使用するRUN命令とCMD命令。共に指定したコマンドを実行する命令ですが、実行されるタイミングが異なります。
RUN命令・CMD命令の違い
- RUN命令はDockerfileからImageを作成するときに実行されます。
- CMD命令はDockerイメージからDockerコンテナを作成するときに実行されます。
両者の違いは、実行されるタイミングの違いです。
パッケージのinstallなどで使用されるRUN命令
RUN命令はimageを作成するときに一度だけ実行される命令なので、imageにパッケージをインストールするなどの処理が記述されます。
例
1 |
RUN apt-get install -y nginx |
1 2 |
COPY ./package*.json ./ RUN npm install |
コンテナ起動時に実行されるCMD命令
CMD命令はコンテナを起動するときに実行されるコマンドを指定します。
そのため、webサーバーの起動などに使用される事が多いです。
例
1 |
CMD nginx -g 'daemon off;' |