目次
Docker Volume コマンド入門:Volume の作成、一覧表示、確認、削除
docker volume は Volume を管理します。Volume の概念と使い方については、Volume とデータの永続化を参照してください。
サブコマンド
| コマンド | 説明 | よく使うオプション |
|---|---|---|
docker volume create [名前] | Volume を作成します(名前を指定しない場合はランダムな名前が生成されます) | --label キー=値、-d ドライバー、-o オプション |
docker volume ls | Volume を一覧表示します | -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日