RUN
RUNコマンドは、前行までに構築されたコンテナ上で指定したコマンドの実行を行うコマンドです。
例えば
FROM ubuntu:18.04
RUN apt-get update
となっている場合、FROM コマンドで作成されたイメージを元に作成されたコンテナ上で apt-get update が実行された状態になります。
イメージのレイヤー
Dockerfileでイメージを構築する場合、1つのコマンドごとにイメージのレイヤー(層)が積み重なっていきます。
例えば、
FROM ubuntu:18.04
RUN apt-get update
RUN apt-get install -y vim
と書かれている場合、
- ubuntu:18.04 のイメージ生成
- ubuntu:18.04 + update処理 のイメージ生成
- ubuntu:18.04 + update処理 + vimインストール のイメージ生成
といったように、層が積み重なるようにイメージが生成されていきます。
(上級) レイヤーを綺麗にする
RUNコマンドを実行した時に、不要なパッケージリストやキャッシュを削除することでレイヤーに不要なファイルを残さないというテクニックがあります。
例えば上記の処理であれば
FROM ubuntu:18.04
RUN apt-get update && apt-get install -y vim && apt-get clean && rm -rf /var/lib/apt/lists/*
のようにすることで、apt-get update などの際に作成された不要なパッケージリストやキャッシュが削除された状態でイメージ化されるため、イメージの容量を小さく抑えることが可能です。
現時点ではそこまで気にしなくても大丈夫ですが、少なくとも他人の書いたDockerfileを読み取る時の知識としては押さえておくと良いでしょう。