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

Dockerfileからボリュームを作成してマウントする方法①
Dockerでは、コンテナの寿命とは切り離してデータを保存するために「ボリューム」を利用します。ここでは、Dockerfileからイメージを作成し、実際にコンテナでボリュームをマウントして動作を確認する流れを、順を追って解説します。今回は「方法①」として、ボリュームの基本的な作成とマウントを扱います。

作業環境をクリーンにする
まず、古いコンテナやイメージを整理してクリーンな状態から始めます。
PS C:\Users\joeac> 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このコマンドを実行すると、停止済みのコンテナや不要なイメージが削除され、以降の操作がスッキリ見やすくなります。
ボリュームも残っているようであれば、ここで削除しておきます。
作業ディレクトリの準備
作業用のディレクトリを作成し、そこに移動します。
PS C:\Users\joeac> cd desktop/docker
PS C:\Users\joeac\Desktop\docker> mkdir volume-test
Directory: C:\Users\joeac\Desktop\docker
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2025/09/29 1:19 volume-test
PS C:\Users\joeac\Desktop\docker> cd volume-test
PS C:\Users\joeac\Desktop\docker\volume-test>この volume-test ディレクトリの中にDockerfileを作成していきます。
Dockerfileの作成
次に、VS Codeなどで Dockerfile を作成します。
「code Dockerfile」を実行します。
PS C:\Users\joeac\Desktop\docker\volume-test> code DockerfileVSCodeが起動します。

以下の内容を入力して保存します。
FROM ubuntu:latest
# ボリュームをマウントするためのディレクトリを作成
RUN mkdir /app
RUN echo "This is App Data" > /app/sample.txt
VOLUME /app
# その他の設定や命令各行の解説を表にまとめます。
| 行番号 | コマンド | 解説 |
|---|---|---|
| 1 | FROM ubuntu:latest | Ubuntuの最新バージョンをベースにイメージを作成 |
| 2 | RUN mkdir /app | /app ディレクトリを作成 |
| 3 | RUN echo "This is App Data" > /app/sample.txt | サンプルファイルを作成しテキストを書き込む |
| 4 | VOLUME /app | /app をボリュームとしてマーク |
| 5 | その他 | 追加の設定や命令を記述可能 |
重要ポイント
- VOLUME命令は「このディレクトリをボリュームに使う」とマークするだけで、ビルド時にボリュームそのものが作成されるわけではありません。
イメージのビルド
Dockerfileを元にイメージを作成します。
コマンド書式
docker build -t <イメージ名> .実行例
docker build -t volume-test .| コマンド要素 | 解説 |
|---|---|
| docker build | イメージをビルドするコマンド |
| -t volume-test | volume-test というタグを付与 |
| . | カレントディレクトリのDockerfileを使用 |
実行結果
PS C:\Users\joeac\Desktop\docker\volume-test> docker build -t volume-test .
[+] Building 6.9s (8/8) FINISHED docker:desktop-linux
=> [internal] load build definition from Dockerfile 0.2s
(省略)
=> => unpacking to docker.io/library/volume-test:latest 0.1s
View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/fohiweq7rswwgisknewj1gb6h 実行後、docker image ls で確認すると、volume-test イメージが作成されていることが分かります。
ボリュームの確認
PS C:\Users\joeac\Desktop\docker\volume-test> docker volume ls
DRIVER VOLUME NAMEここで確認しても app というボリュームはまだ存在しません。
理由は、Dockerfileをビルドしてもボリュームは実際には作成されないためです。
コンテナの作成と実行
ここで、ビルドしたイメージからコンテナを実行し、ボリュームをマウントします。

コマンド書式
docker run -v <ボリューム名>:<ディレクトリ> --rm -it <イメージ名>実行例
docker run -v app:/app --rm -it volume-test| コマンドパーツ | 説明 |
|---|---|
| docker run | コンテナを実行 |
| -v app:/app | app というボリュームをコンテナ内の /app にマウント |
| --rm | コンテナ終了時に自動削除 |
| -it | 対話モードで起動しターミナルを割り当てる |
| volume-test | 使用するイメージ名 |
実行結果
PS C:\Users\joeac\Desktop\docker\volume-test> docker run -v app:/app --rm -it volume-test
root@3d74daaba71a:/#コンテナ内での確認
コンテナが起動したら以下を実行してみます。
root@3d74daaba71a:/# cd /app
root@3d74daaba71a:/app# cat sample.txt
This is App Dataファイルが正しく読み込めることを確認できます。
コンテナ終了後のボリューム確認
コンテナは消滅してもボリュームは残るということを確認します。

コンテナを終了します。
root@3d74daaba71a:/app# exit
exitその後に確認します。
PS C:\Users\joeac\Desktop\docker\volume-test> docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES結果:コンテナは存在しない。
ボリュームを確認します。
PS C:\Users\joeac\Desktop\docker\volume-test> docker volume ls
DRIVER VOLUME NAME
local appここで初めて app ボリュームが作成されていることが確認できます。
ポイント
- コンテナは消えてもボリュームは残るため、データを永続化できる。
まとめ
- Dockerfileで VOLUME命令 を使うと、ディレクトリをボリュームとしてマークできる。
- ただし、ビルド段階ではボリュームは作成されない。
docker run -vを使って初めてボリュームが作成され、マウントされる。- コンテナが消えてもボリュームは残るため、データの永続化が実現できる。
次の「Dockerfileからボリュームを作成してマウントする方法②」では、今回作成した app ボリュームを別のコンテナにマウントし、データを共有する方法を解説していきます。
