67

/var/lib/docker/volumes フォルダーを調べたところ、Docker UUID という名前のフォルダーでバーストしていることがわかりました。各フォルダーには、次の行に沿った内容の config.json ファイルが含まれています。

{"ID":"UUID","Path":"/path/to/mounted/volume","IsBindMount":true,"Writable":true}

どこ

/path/to/mounted/volume

ある時点で -v スイッチを使用して docker コンテナーにマウントされたホスト上のフォルダーへのパスです。Docker を使った実験の開始時、つまり約 3 週間前にさかのぼるこのようなフォルダーがあります。

問題のコンテナはかなり前に停止され、docker rm'ed になっているため、これらのエントリが販売期限を過ぎていないことを確認できません。これは疑問を投げかけます - 残っているのはバグですか、それとも /var/lib/docker/volumes からそのようなエントリを手動で破棄する必要がありますか?

4

3 に答える 3

150

Docker 1.9 以降の場合、ネイティブな方法があります。

孤立したボリュームをすべて一覧表示する

$ docker volume ls -qf dangling=true

でそれらをすべて排除します

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

于 2016-02-01T12:47:50.593 に答える
28

Docker ユーザー ガイドから:

最初の dbdata コンテナー、または後続のコンテナー db1 および db2 を含む、ボリュームをマウントするコンテナーを削除しても、ボリュームは削除されません。ディスクからボリュームを削除するには、ボリュームへの参照を使用して、最後のコンテナーに対して docker rm -v を明示的に呼び出す必要があります。これにより、コンテナ間でデータ ボリュームをアップグレードまたは効果的に移行できます。-ソース

これは、偶発的なデータ損失を避けるための意図的な動作です。docker-cleanup-volumesなどのツールを使用して、未使用のボリュームを消去できます。

于 2015-01-07T07:34:36.047 に答える
9

Docker 1.13+ および ce/ee 17+ リリース番号の場合は、次のvolume pruneコマンドを使用します

docker volume prune

クエリとは異なりdangling=true、これは「リモート」ドライバー ベースのボリュームを削除しません。

于 2017-03-23T23:04:54.623 に答える