Docker超入門:Dockerfileで覚えておきたい命令(VOLUME・SHELL)

 Dockerfileにはたくさんの命令がありますが、その中でも データの永続化シェルの指定 に役立つのが VOLUMESHELL です。
 これらを知っておくと、データを失わないコンテナを作れたり、コマンド実行環境を自在に調整できるようになります。

VOLUMEコマンド:データを永続化する仕組み

VOLUMEコマンドは、コンテナ内の特定ディレクトリを「ボリューム」として宣言するための命令です。
 ボリュームを使うと、コンテナを削除してもデータが残る というメリットがあります。データベースの保存領域やログディレクトリなど、消えては困るデータを扱うときに必須です。

書式

VOLUME ["マウントポイント"]

使用例

VOLUME ["/log"]

この例では、コンテナ内の /log ディレクトリがボリュームとして宣言されます。
こ のディレクトリに書き込まれたデータは、ホストや別のコンテナからも参照できるようになります。

VOLUMEコマンドの特徴まとめ

特徴説明
データ永続化コンテナ削除後もデータが保持される。
データ共有複数コンテナから同じデータを利用可能
典型例データベースデータ、ログファイル、アップロードファイル

SHELLコマンド:デフォルトシェルを指定する

 SHELLコマンドは、Dockerfile内で使われる RUNやCMDで実行されるデフォルトシェルを切り替える 命令です。
通常は /bin/sh -c が使われますが、例えば Bash を使いたい場合に便利です。

書式

SHELL ["シェルのパス", "パラメータ"]

使用例

SHELL ["/bin/bash", "-c"]

 この例では、デフォルトのシェルを Bash に切り替え、-c オプションを使ってコマンドを実行するようにしています。
Bashの構文(&&, ||, {} など)を使いたいときには必須です。

SHELLコマンドの特徴まとめ

特徴説明
デフォルトシェルを変更/bin/sh/bin/bash などに切り替え可能
スクリプト実行に便利Bash構文を使った複雑な処理を記述できる。
設定単位SHELL命令を記述した以降の命令に適用される。

まとめ

  • VOLUME は、コンテナの中で消えてほしくないデータや共有したいデータを扱うときに使う。
  • SHELL は、シェル環境を自由に指定し、より柔軟にコマンド実行できるようにする。

この2つを押さえておくと、コンテナの実行環境をより安心・快適にコントロールできます。