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

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つを押さえておくと、コンテナの実行環境をより安心・快適にコントロールできます。
