Docker超入門:コンテナにボリュームをマウントしてデータを永続化する方法

 Dockerを使ってアプリケーションを動かしていると、コンテナを削除したら中のデータも消えてしまった…という経験をすることがあります。そこで登場するのが ボリュームのマウント です。ボリュームをコンテナに関連付けることで、コンテナを削除してもデータが残り、永続化や共有が可能になります。ここでは、Dockerfileに記述する方法と、docker runコマンドを使ってマウントする方法を丁寧に解説します。

Dockerfileに記述する方法

Dockerfileの中でボリュームをマウントする場合は、VOLUME命令 を使用します。

コマンド書式

VOLUME <ディレクトリ>

実行例

FROM ubuntu:latest

# コンテナ内のディレクトリをボリュームとしてマーク
VOLUME /app/data

# その他の命令や設定

 この例では、コンテナ内の /app/data ディレクトリがボリュームとしてマークされます。これによって、コンテナを起動する際にホストマシンのボリュームや匿名ボリュームと関連付けることができ、データの永続化が実現できます。

Dockerコマンドでボリュームをマウントする方法

Dockerコマンドを使えば、作成済みのボリュームを特定のディレクトリに直接マウントすることができます。

コマンド書式

docker run -v <ボリューム名>:<ディレクトリ名> <イメージ名>

実行例

docker run -v my_volume:/app/data my_image

 この例では、ホスト上にある my_volume という名前のボリュームがコンテナ内の /app/data ディレクトリに関連付けられます。そのため、コンテナ内で /app/data に保存したデータはコンテナ終了後も残り、別のコンテナからも同じデータを利用できます。

主なコマンドとオプションまとめ

コマンド/命令書式説明
VOLUMEVOLUME <ディレクトリ>Dockerfile内でボリュームを指定し、コンテナ内のディレクトリを永続化対象としてマークする。
docker run -vdocker run -v <ボリューム名>:<ディレクトリ> <イメージ名>作成済みのボリュームを指定ディレクトリにマウントする。

まとめ

ボリュームをマウントする方法は2種類あります。

  • DockerfileでVOLUME命令を使う方法:あらかじめ永続化すべきディレクトリを定義する
  • docker run -vで指定する方法:実行時にボリュームをディレクトリへ関連付ける

 どちらを使っても、データの永続化やコンテナ間での共有が簡単に実現できます。Dockerを本格的に活用する上で、ボリュームマウントは欠かせない基本操作といえるでしょう。