docker volume ls コマンドを使ってボリュームをリストしフィルタリングする方法

DockerDockerBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、docker volume ls コマンドを効果的に使用して Docker ボリュームを管理する方法を学びます。まずは、操作対象となるサンプルボリュームを作成します。次に、システム上のすべての既存ボリュームをリストする方法を学びます。

リスト表示をベースに、名前やドライバーなどの条件、および孤立状態 (dangling status) に基づいてボリュームをフィルタリングする方法を探ります。最後に、docker volume ls コマンドの出力を整形して、読みやすさを向上させ、特定の情報を抽出する方法を学びます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/VolumeOperationsGroup -.-> docker/volume("Manage Volumes") subgraph Lab Skills docker/ls -.-> lab-555260{{"docker volume ls コマンドを使ってボリュームをリストしフィルタリングする方法"}} docker/rm -.-> lab-555260{{"docker volume ls コマンドを使ってボリュームをリストしフィルタリングする方法"}} docker/create -.-> lab-555260{{"docker volume ls コマンドを使ってボリュームをリストしフィルタリングする方法"}} docker/volume -.-> lab-555260{{"docker volume ls コマンドを使ってボリュームをリストしフィルタリングする方法"}} end

サンプルボリュームの作成

このステップでは、Docker ボリュームを作成する方法を学びます。ボリュームは、Docker コンテナによって生成され、使用されるデータを永続化するための推奨方法です。バインドマウントはホストマシンのディレクトリ構造に依存しますが、ボリュームは Docker によって完全に管理されます。

ボリュームを作成するには、docker volume create コマンドを使用します。myvolume という名前のシンプルなボリュームを作成しましょう。

docker volume create myvolume

作成が成功した場合、コンソールにボリュームの名前が表示されるはずです。

次に、another_volume という名前の別のボリュームを作成しましょう。

docker volume create another_volume

これで、Docker コンテナが永続データを保存するために使用できる 2 つのボリュームを作成しました。

すべてのボリュームをリストする

このステップでは、システム上に存在するすべての Docker ボリュームをリストする方法を学びます。これは、利用可能なボリュームを確認し、管理するのに役立ちます。

すべてのボリュームをリストするには、docker volume ls コマンドを使用します。このコマンドは、すべてのボリュームのリストを表示し、それにはドライバーと名前が含まれます。

docker volume ls

出力には、前のステップで作成したボリューム (myvolumeanother_volume) が、システム上に存在する可能性のある他のボリュームとともに表示されるはずです。出力には通常、DRIVERVOLUME NAME が含まれます。

ボリュームのデフォルトのドライバーは通常 local です。これは、ボリュームが Docker が実行されているローカルマシンに保存されていることを意味します。

名前とドライバーでボリュームをフィルタリングする

このステップでは、Docker ボリュームのリストを名前とドライバーに基づいてフィルタリングする方法を学びます。ボリュームが多数あり、特定のボリュームを見つけたい場合に便利です。

docker volume ls コマンドに --filter フラグを使用することで、出力をフィルタリングできます。フィルターはキー=値のペアを取ります。

名前でフィルタリングするには、name キーを使用します。myvolume という名前のボリュームをフィルタリングしてみましょう。

docker volume ls --filter name=myvolume

出力には myvolume のみが表示されるはずです。

次に、ドライバーでフィルタリングしてみましょう。ボリュームを作成する際にデフォルトのドライバーを使用したため、ドライバーは local です。local ドライバーを使用するボリュームをフィルタリングしましょう。

docker volume ls --filter driver=local

このコマンドは、local ドライバーを使用するすべてのボリュームをリストするはずで、それには myvolumeanother_volume の両方が含まれるはずです。

フィルターを組み合わせることもできます。たとえば、local ドライバーを使用する myvolume という名前のボリュームをフィルタリングするには、次のように使用できます。

docker volume ls --filter name=myvolume --filter driver=local

これにより、再び myvolume のみが表示されます。

未使用 (dangling) 状態でボリュームをフィルタリングする

このステップでは、Docker ボリュームを「未使用 (dangling)」状態に基づいてフィルタリングする方法を学びます。未使用ボリュームとは、現在どのコンテナにもアタッチされていないボリュームのことです。これらのボリュームは不必要にディスク領域を消費することがあります。

未使用ボリュームをフィルタリングするには、--filter dangling=true フラグを使用します。

まず、コンテナを作成し、ボリュームの 1 つをそれにアタッチしましょう。ubuntu イメージを使用します。ubuntu イメージがローカルにない場合、Docker は自動的にそれを取得します。

docker run -d --name mycontainer -v myvolume:/app ubuntu sleep 3600

このコマンドは、デタッチドモード (-d) で mycontainer という名前のコンテナを実行し、myvolume をコンテナ内の /app ディレクトリにマウント (-v myvolume:/app) し、ubuntu イメージを使用し、コンテナを 1 時間実行し続けます (sleep 3600)。

次に、再びすべてのボリュームをリストしましょう。

docker volume ls

myvolumeanother_volume の両方が表示されます。myvolume は現在 mycontainer で使用されています。another_volume はどのコンテナにもアタッチされていないため、未使用ボリュームです。

では、未使用ボリュームをフィルタリングしましょう。

docker volume ls --filter dangling=true

出力には another_volume が表示されるはずです。なぜなら、このボリュームは実行中のコンテナにアタッチされていないからです。

未使用ではないボリューム(つまり、コンテナにアタッチされているボリューム)を表示するには、--filter dangling=false を使用できます。

docker volume ls --filter dangling=false

これにより myvolume が表示されるはずです。

最後に、作成したコンテナを停止して削除しましょう。

docker stop mycontainer
docker rm mycontainer

ここで、再び未使用ボリュームをリストすると、

docker volume ls --filter dangling=true

myvolumeanother_volume の両方が未使用として表示されるはずです。なぜなら、myvolume はもはやコンテナにアタッチされていないからです。

ボリューム出力のフォーマットを指定する

このステップでは、docker volume ls コマンドの出力のフォーマットを指定する方法を学びます。これにより、表示する情報をカスタマイズし、自分のニーズに最適な形式で表示することができます。

--format フラグを使用して、出力フォーマットを指定できます。このフラグは Go テンプレート構文を受け付けます。

ボリュームをリストし、ボリューム名のみを表示してみましょう。これを実現するには、{{.Name}} テンプレートを使用できます。

docker volume ls --format "{{.Name}}"

このコマンドは、ボリューム名のリストを 1 行に 1 つずつ出力します。

次に、ドライバーと名前の両方をコロンで区切って表示してみましょう。{{.Driver}}:{{.Name}} を使用できます。

docker volume ls --format "{{.Driver}}:{{.Name}}"

出力には、各ボリュームのドライバーと名前が local:myvolume のように表示されます。

table フォーマットを使用して、出力をより読みやすい表形式で表示することもできます。これはデフォルトの出力に似ていますが、列の制御がより細かくできます。表形式でドライバーと名前を表示してみましょう。

docker volume ls --format "table {{.Driver}}\t{{.Name}}"

\t は列間にタブスペースを作成するために使用されます。出力は "DRIVER" と "NAME" をヘッダーとする表になります。

最後に、この実験中に作成したボリュームをクリーンアップしましょう。docker volume rm コマンドを使用してこれらのボリュームを削除できます。

docker volume rm myvolume another_volume

ボリュームが削除されたことを確認するメッセージが表示されるはずです。

まとめ

この実験では、docker volume ls コマンドを使用して Docker ボリュームを管理する方法を学びました。まず、docker volume create を使用してサンプルボリュームを作成しました。その後、docker volume ls を使用してシステム上のすべての既存ボリュームをリストする方法を調べました。

さらに、特定のボリュームを見つけるためにボリュームをフィルタリングする方法を詳しく学びました。--filter フラグと name および driver キーを使用して、名前とドライバーでボリュームをフィルタリングする方法を学びました。この実験では、未使用 (dangling) 状態に基づいてボリュームをフィルタリングすることや、docker volume ls コマンドの出力をより読みやすくするためにフォーマットする方法もカバーしました。