すべてのDockerボリュームを削除するにはどうすればよいですか?


91

を実行するdocker volume lsと、ボリュームのリストは次のようになります。

DRIVER              VOLUME NAME
local               305eda2bfd9618266093921031e6e341cf3811f2ad2b75dd7af5376d037a566a
local               226197f60c92df08a7a5643f5e94b37947c56bdd4b532d4ee10d4cf21b27b319
...
...
local               209efa69f1679224ab6b2e7dc0d9ec204e3628a1635fa3410c44a4af3056c301

すべてのボリュームを一度に削除したい。どうすればできますか?

回答:


188

未使用のデータ(コンテナーのないボリュームを含む)をすべて削除する公式コマンドは、docker 1.13を使用する予定です。

docker system prune  

ボリュームのみに制限する場合は、未使用のボリュームのみを削除します。

docker volume prune

あなたはまた、持っているdocker image prunedocker container pruneなど、:
もっと「で参照してくださいプルーン未使用ドッカーはオブジェクト」。

commit 86de7c0およびPR 26108を参照してください。

実際の動作はplay-with-docker.comで確認できます。

/ # docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
1296a5e47ef3        hello-world         "/hello"            7 seconds ago       Exited (0) 6 seconds ago                       prickly_poincare

/ # docker system  prune
WARNING! This will remove:
        - all stopped containers
        - all volumes not used by at least one container
        - all networks not used by at least one container
        - all dangling images
Are you sure you want to continue? [y/N] y
Deleted Containers:
1296a5e47ef3ab021458c92ad711ad03c7f19dc52f0e353f56f062201aa03a35

ボリュームを管理する現在の(dockerdocker volume 1.13より前の)方法はPR 14242とコマンドで導入され、2015年7月のコメントに記載されています。

docker volume rm $(docker volume ls -q --filter dangling=true)

ありがとうございます。新しいpruneコマンドについては知りませんでした。
treeface

3
プルーンコマンドはすばらしいですが、注意してください。彼らはあなたがそれらを呼び出すときにコンテナが実行されていると想定しているようです。関連付けられているがアクティブに使用されていないもの(ネットワークなど)を削除し、次に既存のコンテナーが起動したときに障害を引き起こします。dangling何が剪定されるのかわからない場合は、事前にフィルターを使用してください:)
jocull

docker system pruneローカルボリュームは削除されないようですが、docker volume prune整理されます
Maciek Rek

23

2017年に編集:この回答は2016年4月16日に提供され、現在は古く、1.13より前のdockerバージョンに対してのみ正しいです。@ VonCからの回答を使用してください。今は正しいとマークされています

未使用のボリュームを削除するには、組み込みのdocker volume rmコマンドを使用できます。このrmコマンド/var/lib/docker/volumesは、ボリュームではないディレクトリも削除するので、保存したい場所に何も配置していないことを確認してください:
ボリュームをリストするコマンド。

$ docker volume ls -qf dangling=true

掃除:

$ docker volume rm $(docker volume ls -qf dangling=true)

lsの詳細はこちら、rmの詳細はこちら


1
--dry-run最初にパラメーターを持つダングリングボリュームのリストをテストしないと、それを実行できません。
セルゲイロディオノフ2016

--dry-runオプションはありません。
Harald Albers 2016年

1
この答えは、何があってもすべてのボリュームを削除したい場合の答えです。ありがとう!
Mücahitユルマズ

5

これは私が便利であることがわかったものです:https : //github.com/chadoe/docker-cleanup-volumes

/ var / lib / docker / volumesおよび/ var / lib / docker / vfs / dir Dockerバージョン1.4.1から1.11.xまでの孤立したDockerボリュームを削除するためのシェルスクリプト

それは基本的に孤立した/ぶら下がっているボリュームのクリーンアップを行いますが、それは--dry-run含まれていますが、(前のコメントで参照されている)Dockerに含まれているコマンドもいくつか注記しています

Docker 1.9以降に関する注意

Docker 1.9以降で孤立したボリュームを削除するには、このdocker-cleanup-volumesスクリプトの代わりに組み込みのdocker volumeコマンドを使用することもできます。組み込みコマンドは、ボリュームではない/ var / lib / docker / volumes内のディレクトリも削除するので、そこに保存したいものを何も入れていないことを確認してください。

リスト:

$ docker volume ls -qf dangling=true

掃除:

$ docker volume rm $(docker volume ls -qf dangling=true)

または、no-opをより適切に処理しますが、Linux固有です。

$ docker volume ls -qf dangling=true | xargs -r docker volume rm

3

質問に答え、マークから借用するために、これは機能します:

$ docker volume rm $(docker volume ls -qf dangling=true | xargs)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.