本記事はDocker ver24.0.7の環境で確認しています。
このコマンドは、Dockerホスト上に存在するデータボリュームの一覧を表示します。
オプションで、出力内容のフィルターを指定することも可能です。
dockerのデータボリュームにつきましては、別記事「Dockerのデータボリュームについてもう少し詳しい説明」をご参照ください。
docker volume lsコマンドのフォーマットとオプション
フォーマット
docker volume ls [オプション]
主なオプション一覧
オプション | 概説 |
---|---|
-f, --filter=[] | 出力内容のフィルターとして「dangling=<boolean>」 「driver=<string>」「name=<string>」「label=<string>」 が指定可能 |
--format=[] | 出力フォーマットを指定する |
-q, --quiet | データボリューム名のみ表示する |
コマンド例
$ docker volume ls
$ docker volume ls -f name=keyword
docker volume lsコマンドの主な使い方
以下で実例をまじえたコマンドの使い方を解説していきたいと思います。
基本事項の解説
docker volume lsコマンドは、docker volume createコマンドで作成したデータボリュームの一覧を表示できます。
データボリュームの名前や状態などによるフィルターを指定して、出力される一覧の内容を絞ることも可能です。
データボリュームは、一度作ってしまいますと一覧表示することはほとんど無くなると思います。
しかし、データボリューム関連のトラブルや不要になった領域の削除などを行う場合にはとても重宝します。
データボリュームの一覧を出力する
まずは、以下のコマンドでデータボリュームtestvol01を作成します。
$ docker volume create testvol01
docker volume createコマンドにつきましては別記事「docker volume createコマンドの使い方(実例付)」を参照下さい
以下のコマンドでデータボリュームtestvol01が作成されていることを確認します。
$ docker volume ls
Dockerホスト内に存在する全データボリュームが出力されます。
DRIVER VOLUME NAME
local testvol01
他のデータボリュームが大量に出力される場合は、フィルターでデータボリューム名を指定すると見やすいです。
$ docker volume ls -f name=testvol01
以下のように、nameオプションで指定したキーワードを含むデータボリュームが出力されます。
DRIVER VOLUME NAME
local testvol01
フィルター「dangling」を指定して出力する
docker volume lsコマンドは、以下のフィルターが利用可能です。
- dangling
指定したデータボリュームがコンテナで使用されていない場合は「true」、使用されている場合は「false」を指定 - driver
指定した文字を含むデータボリュームのドライバ(プラグイン)を使用しているものを出力する - name
指定した文字を含むデータボリューム名のものを出力する - label
指定したラベルを含むデータボリューム名のものを出力する
前項でデータボリュームtestvol01を新規に作成した状態で、以下のコマンドを実行します。
$ docker volume ls -f dangling=true -f name=testvol01
以下の通り、testvol01が出力されます。
DRIVER VOLUME NAME
local testvol01
データボリュームtestvol01は作成したばかりで、どこからも利用されていないためです。
ここで、以下のコマンドで、コンテナtestvmでデータボリュームtestvol01をアサインしてみます。
$ docker run -dit -v testvol01:/opt --init --name testvm ubuntu
この状態で以下のコマンドを実行します。
$ docker volume ls -f dangling=true -f name=testvol01
以下の通り、testvol01は出力されなくなりました。
DRIVER VOLUME NAME
では、以下のコマンドで、コンテナtestvmを削除します。
$ docker stop testvm
$ docker rm testvm
この状態で以下のコマンドを実行します。
$ docker volume ls -f dangling=true -f name=testvol01
今度はデータボリュームtestvol01が出力されました。
DRIVER VOLUME NAME
local testvol01
このように、danglingフィルターは、データボリュームがコンテナから使用されているか否かを判断する際に使用できます。
フィルター「driver」「name」及び「label」を指定して出力する
driverフィルターを使用して、以下のコマンドを実行します。
$ docker volume ls -f driver=local
localボリュームドライバを使用しているデータボリュームの一覧が出力されます。
nameフィルターを使用して、以下のコマンドを実行します。
$ docker volume ls -f name=vol01
文字列「vol01」を含む名前(例えば先ほど作成した「testvol01」)を使用しているデータボリュームの一覧が出力されます。
labelフィルターを使用して、以下のコマンドを実行します。
$ docker volume ls -f label=testlabel
文字列「testlabel」を含むラベルを使用しているデータボリュームの一覧が出力されます。
※ラベルは、docker volume createコマンドにて、データボリュームを作成する際に付与することができます。
docker volume createコマンドは別記事「docker volume createコマンドの使い方(実例付)」をご参照ください。
出力内容のフォーマットを指定する
デフォルトでは、ドライバ名とデータボリューム名が出力されますが、「--format」オプションを使用することで、出力内容をカスタマイズすることができます。
「--format」オプションで指定可能なキーワードは以下のとおりです。
- {{.Name}} データボリューム名
- {{.Driver}} ドライバ名
- {{.Scope}} スコープ名
- {{.Mountpoint}} データボリュームの実領域の場所
- {{.Labels}} 付与されている全ラベル
- {{.Label "xxx"}} 指定したラベルの値
例えば、<データボリューム名> : <ドライバ名> : <データボリュームの実領域の場所>のように出力させたい場合は、以下のコマンドを実行します。
$ docker volume ls --format "{{.Name}} : {{.Driver}} : {{.Mountpoint}}"
結果は、以下のように出力されます。
testvol01 : local : /var/lib/docker/volumes/testvol01/_data
testvol03 : local : /var/lib/docker/volumes/testvol03/_data
testvol05 : local : /var/lib/docker/volumes/testvol05/_data
データボリューム名のみ出力する
以下のコマンドを実行します。
$ docker volume ls -q
結果は、データボリューム名のみ出力されます。
これは、シェルスクリプトなどで、データボリュームの一覧を利用する場合に便利です。
ちなみに、このコマンドは、前項の「--format」オプションを利用した以下のコマンドと同じ内容を出力します。
$ docker volume ls --format "{{.Name}}"
おわりに
以上でdocker volume lsコマンドの紹介を終わります。
ご指摘、ご要望などが御座いましたらコメントいただけるとうれしいです。
他のDockerコマンドの実例付紹介記事は、本サイト内の別記事「Dockerのコマンドの一覧(オリジナルな実例付き)」をご参照ください。
最後までお読みいただきありがとうございました。
コメント