このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Docker基礎】ボリュームをマウントする方法

ボリュームをマウントする方法

 コンテナと外部ストレージを接続する方法には「バインドマウント」と「ボリュームマウント」がありましたが、ここでは ボリュームマウント の具体的なやり方を体験してみましょう。
 ボリュームマウントは Docker が管理する専用領域を使うため、ホストOS とコンテナのパス依存を気にせずに済むのが最大のメリットです。

1.ボリュームマウントの流れ

  1. ボリュームを作成
  2. Apache コンテナを作成・起動
  3. 確認(必要に応じて volume inspectcontainer inspect で情報をチェック)

2.作成するコンテナの情報

項目
イメージ名httpd
ボリューム名volume1
ポート番号8080:80

3.使用するコマンドの概要

ボリューム作成

docker volume create volume1

ボリューム詳細情報の表示

docker volume inspect volume1

ボリューム削除

docker volume rm volume1

コンテナ起動時にボリュームをマウントする (-v オプション)

-v volume1:/usr/local/apache2/htdocs
  • volume1 → ボリューム名
  • /usr/local/apache2/htdocs → コンテナ内のマウント先

4.手順

STEP1:ボリュームを作成

まずは volume1 という名前のボリュームを作ります。

docker volume create volume1

Docker Engine が実際のディレクトリを割り当て、内部で管理してくれます。

STEP2:「run」コマンドで Apache コンテナを起動

  1. httpd イメージを使って、コンテナ名 apache-container を起動し、ポートを 8080:80 にマッピング。
  2. -v volume1:/usr/local/apache2/htdocs で先ほど作成したボリューム volume1 を、Apache のドキュメントルート /usr/local/apache2/htdocs にマウントします。
docker run --name apache-container -d -p 8080:80 -v volume1:/usr/local/apache2/htdocs httpd
  • --name apache-container: コンテナ名を指定
  • -d: バックグラウンド実行
  • -p 8080:80: ホストの 8080 → コンテナの 80 番ポート
  • -v volume1:/usr/local/apache2/htdocs: ボリュームマウント指定

STEP3:「volume inspect」で情報を表示

docker volume inspect volume1

実行結果(例)

[
  {
    "CreatedAt": "2025-01-05T07:14:08Z",
    "Driver": "local",
    "Labels": null,
    "Mountpoint": "/var/lib/docker/volumes/volume1/_data",
    "Name": "volume1",
    "Options": null,
    "Scope": "local"
  }
]

Mountpoint/var/lib/docker/volumes/volume1/_data として割り当てられていることがわかります。

コンテナ側でもチェックする場合
docker container inspect apache-container

実行結果(例)

...(省略)...
        "Mounts": [
            {
                "Type": "volume",
                "Name": "volume1",
                "Source": "/var/lib/docker/volumes/volume1/_data",
                "Destination": "/usr/local/apache2/htdocs",
                "Driver": "local",
                "Mode": "z",
                "RW": true,
                "Propagation": ""
            }
        ],
...(省略)...

 実行結果の Mounts セクションに、"Name": "volume1", "Destination": "/usr/local/apache2/htdocs" と表示されていれば OK です。

5.後始末

コンテナを停止・削除

docker stop apache-container
docker rm apache-container

ボリュームを削除

docker volume rm volume1

まとめ

  1. ボリュームを作るdocker volume create <ボリューム名>
  2. コンテナ起動時にボリュームをマウント-v <ボリューム名>:<コンテナ内パス>
  3. 確認する
    docker volume inspect <ボリューム名>
    docker container inspect <コンテナ名> の Mounts セクション

 ボリュームマウントは、ホスト依存を気にせずデータを保管できるメリットがあります。ただし、ホストから直接ファイルを編集しにくい側面もあります。バインドマウントと併せてシーンに応じて使い分けることで、Docker のデータ管理がより柔軟になっていきます。