まめぞうの技術メモ

IT関連で勉強したことをメモします

docker でドライブマウントする方法(docker volume create)

偶に docker でどうやってドライブマウントするんだっけ?と分からなくなることがあるのでメモ。

今回は、docker volume create を使います。

docker でマウントする方法
docker でマウントする方法

以下、公式ドキュメントにも書かれています。

matsuand.github.io

ボリュームを作る

docker volume create test-volume

ボリュームが出来ているか確認(リスト出力)

  • コマンド
docker volume ls
  • 出力結果
DRIVER    VOLUME NAME
local     test-volume

ボリュームが出来ているか確認(inspect)

  • コマンド
docker volume inspect test-volume
  • 出力結果
[
    {
        "CreatedAt": "2021-09-07T00:47:45Z",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/test-volume/_data",
        "Name": "test-volume",
        "Options": {},
        "Scope": "local"
    }
]

そのボリュームをマウントして使う

--mount source=ボリューム名,target=マウントするパス \ または -v ボリューム名:/マウントするパス で、対象のボリュームをマウントして使うことができます。

以下、nginx をマウントして使う例です。バックグラウンドで起動するために、-d オプションも付与しています。

docker run -d \
    -v test-volume:/volume_data \
    nginx

起動しました。

>docker run -d -v test-volume:/volume_data nginx
3fe4be55e5996ee51a8206bb51fc486cb42090baa2664ebe4b09e97c96077634

マウントの詳細をコンテナ内部に入って確認

コンテナ内部に入ってみます。

docker exec -it 3fe4be55e599 bash

ls -la して、volume_data フォルダが存在することを確認できます。

root@3fe4be55e599:/# ls -la
total 92
drwxr-xr-x   1 root root 4096 Sep  7 01:25 .
...
drwxr-xr-x   2 root root 4096 Sep  7 00:47 volume_data

フォルダに入ってみると、何もデータはありません。

root@3fe4be55e599:/# cd volume_data
root@3fe4be55e599:/volume_data# ls

データの永続性を確認

ファイルを作成してみます。

root@3fe4be55e599:/volume_data# echo "test" > test.txt
root@3fe4be55e599:/volume_data# cat test.txt
test

データが永続化しているかを確認したいので、コンテナを抜けます。

root@3fe4be55e599:/volume_data# exit

docker stop します。

docker stop 3fe4be55e599

新しいコンテナを起動します。

docker run -d -v test-volume:/volume_data nginx
bca0e30691ad92dbfd4014d910f00c1d585540fcf3dc750e612b8967da54e3e2

コンテナに入ります。

docker exec -it bca0e30691ad bash

データの永続性が以下で確認できました。

root@bca0e30691ad:/# cd volume_data/

root@bca0e30691ad:/volume_data# ls
test.txt

root@bca0e30691ad:/volume_data# cat test.txt
test

他にバインドマウントもある

今回はボリュームを使う方法でしたが、他にもバインドマウントを使う方法もあります。

tech.mamezou00000.com