このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Docker超入門:Dockerfileからボリュームを作成してマウントする方法②

Dockerfileからボリュームを作成してマウントする方法②
前回の「方法①」では、Dockerfileからイメージを作成し、そのコンテナにボリュームをマウントするところまでを確認しました。今回は続きとして、別のコンテナから同じボリュームを利用できることを確認する手順を解説します。これにより、コンテナ間でデータを共有できる仕組みが理解できます。

別のコンテナでボリュームをマウント
Dockerのボリュームは、コンテナが消えても残り続けるため、他のコンテナから再利用できます。ここでは軽量な BusyBoxコンテナ を使って、前回作成した app ボリュームをマウントし、データにアクセスしてみます。

コマンド書式
docker run -v <ボリューム名>:<ディレクトリ> --rm -it <イメージ名>実行例
docker run -v app:/app --rm -it busybox| コマンドパーツ | 説明 |
|---|---|
| docker run | コンテナを起動するためのコマンド |
| -v app:/app | app という名前のボリュームをコンテナ内の /app にマウント |
| --rm | コンテナ終了時に自動的に削除 |
| -it | 対話的にコンテナを操作するモード |
| busybox | 使用するイメージ。軽量なLinux環境を提供するBusyBoxを指定 |
実行結果
PS C:\Users\joeac> docker run -v app:/app --rm -it busybox
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
80bfbb8a41a2: Pull complete
Digest: sha256:d82f458899c9696cb26a7c02d5568f81c8c8223f8661bb2a7988b269c8b9051e
Status: Downloaded newer image for busybox:latest
/ #ボリュームの内容を確認
BusyBoxコンテナが起動したら、前回 volume-test コンテナで作成したデータを読み込んでみます。
実行結果
/ # cd app
/app # cat sample.txt
This is App Data
/app #これで、別のコンテナからも同じボリュームのデータを利用できることが確認できました。これはアプリケーションのログや設定ファイル、アップロードデータなどを複数のコンテナで共有する際にとても便利です。
BusyBoxコンテナを終了させます。
コンテナを終了するときは exit を実行します。
/app # exit
PS C:\Users\joeac\Desktop\docker\volume-test>Dockerオブジェクトの整理
演習後は不要なコンテナやイメージを整理しておくと、環境がスッキリします。
実行結果
PS C:\Users\joeac\Desktop\docker\volume-test> docker system prune -a
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N] yこのコマンドは以下を一括で削除します。
- 停止中のコンテナ
- 未使用のネットワーク
- コンテナに関連付けられていないイメージ
- ビルドキャッシュ
確認メッセージが表示されたら y を入力します。
ボリュームの削除
ボリュームも整理したい場合は以下を実行します。
個別に削除します。
PS C:\Users\joeac\Desktop\docker\volume-test> docker volume rm app
appまとめ
- ボリュームはコンテナが削除されても残るため、他のコンテナからも再利用できる。
- BusyBoxのような軽量コンテナを使えば、ボリュームの中身を簡単に確認できる。
docker system prune -aで不要なオブジェクトを一括削除し、docker volume rmで個別のボリュームも整理できる。
これで、「方法①」と「方法②」を通して、Dockerfileからボリュームを定義してマウントし、さらに別のコンテナでも利用する流れが理解できました。
