概要
- コンテナ削除後もデータを保持できる
- 複数コンテナ間でデータを共有可能
- ホストのパスに依存せずDockerが管理する
- コンテナ停止や削除に影響されずデータを保持
- 複数コンテナで共有可能
- Bindマウントより移植性が高く、Docker管理下で安全
1. ボリュームの作成
docker volume create myvolume
- コンテナの削除・再作成を行ってもデータを保持したいため
- Dockerが管理する領域としてボリュームを作ることで、ホスト環境に依存せず安全に永続化できる
- 名前(ここでは
myvolume)を付けることで、複数コンテナ間で同じボリュームを簡単に指定できる
2. ボリュームを使ってコンテナを起動
docker container run --rm -d \
--name vct1 \
--mount source=myvolume,target=/volume1 \
alpine:3.10.3 tail -f /dev/null
-
--mount source=myvolume,target=/volume1
→ 作成したボリュームをコンテナ内/volume1にマウントする
→ これでコンテナ内からボリュームにアクセス可能になり、書き込んだデータが永続化される -
-d(デーモンモード)
→ コンテナをバックグラウンドで動かし、操作しやすくする -
--rm
→ コンテナ停止時に自動で削除される
→ ボリュームのデータは残るので安全 -
alpine:3.10.3 tail -f /dev/null
→ 最小限のAlpineイメージを使い、コンテナを長時間起動してボリューム操作だけを行うため
3. コンテナ内でファイル操作
docker container exec vct1 touch /volume1/hello1.txt
- 実際にボリュームにデータを書き込むことで、永続化を確認する
-
/volume1に書き込むと、コンテナ削除後もボリュームにファイルが残る
4. 新しいコンテナで同じボリュームを利用
docker container run --rm -d \
--name vct2 \
--mount source=myvolume,target=/volume2 \
alpine:3.10.3 tail -f /dev/null
docker container exec vct2 ls /volume2
# 出力: hello1.txt
- 複数コンテナで同じデータを共有できることを確認する
-
vct1で作成したhello1.txtが新しいコンテナvct2でも見える - データの一貫性や共有方法の理解に役立つ
5. ボリュームの確認
docker volume ls
- 現在作成されているボリュームを確認できる
- どのボリュームが存在するか、名前やドライバーを確認して管理するため
6. ボリュームの削除
docker container stop vct2
docker volume rm myvolume
- 使わなくなったボリュームを削除してディスクを整理する
- ボリュームを削除すると中のデータも消えるので注意が必要