目次

Docker Volume コマンド入門:Volume の作成、一覧表示、確認、削除

docker volume は Volume を管理します。Volume の概念と使い方については、Volume とデータの永続化を参照してください。

サブコマンド

コマンド説明よく使うオプション
docker volume create [名前]Volume を作成します(名前を指定しない場合はランダムな名前が生成されます)--label キー=値、-d ドライバー、-o オプション
docker volume lsVolume を一覧表示します-f フィルター、-q 名前だけを表示、--format
docker volume inspect 名前詳細情報を表示します-f テンプレート
docker volume rm 名前...Volume を削除します(使用中のものは削除できません)-f
docker volume prune未使用の匿名 Volume を削除します-a 名前付きも含める、-f 確認なし、--filter

docker volume ls -f のフィルター条件:dangling=true(どのコンテナにも使われていない)、name=名前の一部、label=キー=値、driver=local。

作成、書き込み、読み取り

$ docker volume create mydata
mydata

$ docker volume ls
DRIVER    VOLUME NAME
local     2bc47e5efc92fb9cbc751a0d25853c6c800d4e4806c256fb7d68fa9dff112fcd
local     6729482c30a3f652c14f542c6f341c811f087fc9626efcfdf00a49a5ae721e2c
local     78297657b68403b39f39940496ce3faf49e6257a11d5103d043077a36261236a
local     a23af26d1da49e018edecb6e29f9be3875fb02e8c50510a40fbb5cf49da94f81
local     mydata

$ docker volume inspect mydata
[
    {
        "CreatedAt": "2026-10-13T05:28:56Z",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/mydata/_data",
        "Name": "mydata",
        "Options": null,
        "Scope": "local"
    }
]

$ docker run --rm -v mydata:/data alpine:3.23 sh -c "echo saved > /data/a.txt"

$ docker run --rm -v mydata:/data alpine:3.23 cat /data/a.txt
saved
  • ls には mydata のほかに、長い名前の匿名 Volumeがいくつかあります。以前のコンテナが残したもので(たとえば postgres イメージの VOLUME 宣言によって自動作成されたものです)。
  • inspect の Mountpoint は、Docker ホスト上にあるデータの実際の場所です。
  • 2つの異なるコンテナが順番に mydata をマウントし、2つ目のコンテナが1つ目のコンテナが書き込んだファイルを読み取れました。データは Volume に保存され、コンテナとは独立しています。

孤立した Volume を特定してクリーンアップする

$ docker run --rm -v /tmpdata alpine:3.23 true

$ docker volume ls -f dangling=true
DRIVER    VOLUME NAME
local     2bc47e5efc92fb9cbc751a0d25853c6c800d4e4806c256fb7d68fa9dff112fcd
local     6729482c30a3f652c14f542c6f341c811f087fc9626efcfdf00a49a5ae721e2c
local     78297657b68403b39f39940496ce3faf49e6257a11d5103d043077a36261236a
local     a23af26d1da49e018edecb6e29f9be3875fb02e8c50510a40fbb5cf49da94f81
local     mydata

$ docker volume prune -f
Deleted Volumes:
a23af26d1da49e018edecb6e29f9be3875fb02e8c50510a40fbb5cf49da94f81
6729482c30a3f652c14f542c6f341c811f087fc9626efcfdf00a49a5ae721e2c
78297657b68403b39f39940496ce3faf49e6257a11d5103d043077a36261236a
2bc47e5efc92fb9cbc751a0d25853c6c800d4e4806c256fb7d68fa9dff112fcd

Total reclaimed space: 348.9MB
  • -v /tmpdata はコンテナ内のパスだけを指定し、名前を指定しないため、匿名 Volume が作成されます。--rm によってコンテナを削除すると、Volume も一緒に削除されます。
  • dangling=true は、名前付きの mydata を含め、現在どのコンテナにも使われていないすべての Volume を一覧表示します。
  • prune -f が削除したのは匿名 Volume 4つだけで、348.9 MB が回収されました。名前付きの mydata は保持されました。

ラベル

$ docker volume create --label env=dev tagged
tagged

$ docker volume ls -f label=env=dev
DRIVER    VOLUME NAME
local     tagged

$ docker volume rm mydata tagged
mydata
tagged

Volume にラベルを付けると、プロジェクトや環境ごとに絞り込んでクリーンアップできます。たとえば、docker volume prune --filter label=env=dev を使います。

関連する章

練習問題

練習:project=demo というラベルの Volume を作成し、このラベルが付いていて使用されていないすべての Volume(名前付きも含む)を、1つのコマンドで削除してください。

解答
docker volume create --label project=demo demo_data
docker volume prune -a -f --filter label=project=demo

-a を指定すると名前付き Volume も削除対象になります。--filter は、このラベルが付いた Volume だけに対象を絞ります。

よくある質問

先に docker volume create を実行する必要がありますか?

いいえ。docker run -v 名前:/パス で存在しない Volume を指定すると、自動的に作成されます。先に作成しておくと、ラベルやドライバーのオプションを追加できます。

docker volume prune はデータベースを削除しますか?

Docker 23以降では、docker volume prune は**どのコンテナにも使われていない匿名 Volume**だけを削除し、名前付き Volume は削除しません。未使用の名前付き Volume も削除するには docker volume prune -a を使います。実行例は[ディスク容量のクリーンアップ](/ja/docker/cleanup/)を参照してください。

Volume をバックアップするにはどうすればよいですか?

一時コンテナに Volume とホストのフォルダーを同時にマウントし、tar でアーカイブします。例は[Volume とデータの永続化](/ja/docker/volumes/)を参照してください。

更新日 2026年10月14日