docker volume lsコマンドの使い方(実例付)

Docker
Docker公式ロゴ3b

 本記事はDocker ver19.03.10の環境で確認しています。

 このコマンドは、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コマンドの主な使い方

 以下で実例をまじえたコマンドの使い方を解説していきたいと思います。

実例では、Ubuntuの公式イメージにより起動したコンテナ(testvm)を使用します。

コンテナは「docker run -dit --init --name testvm ubuntu」で起動します。

※「--rm」オプションを付けておりませんので、ご利用後はコンテナ削除をお忘れなく。

基本事項の解説

 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
  • driver
  • name
  • label
  • dangling
    コンテナで使用されている(参照されている)か否か
  • driver
    指定した文字を含むデータボリュームのドライバ(プラグイン)を使用しているものを出力する
  • name
    指定した文字を含むデータボリューム名のものを出力する

 前項でデータボリューム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のコマンドの一覧(CE対応版)(オリジナルな実例付き)」をご参照ください。

 最後までお読みいただきありがとうございました。

コメント

タイトルとURLをコピーしました