不要な Docker volume を削除する方法

Dockerでvolumeを使って、開発をしていくと、不要なvolumeができて残骸が残ってしまう。それぞれが必要か不要かわからなくなってしまうことも多いので、不要なものだけを安全に削除する方法をご紹介します。


例えば以下のような状態で、実際に使っているvolumeは、”db_data”だけだとする。

$ docker volume list
1ad214995cf6b0fa9f3c79689b79ccd79b1607c833a37fec817b0e8c85d0a975
8c85a582e0a29c026e776c886b49493931c76efd73f0da86d23e3a8d665ef6ad
c5dd26002bd5330d01324ec2d87be8c5db71e8f4f8ae3ffa3977be964c0591da
db_data
docker-compose_db_data

未使用の volume の削除 “prune”

prune は、コンテナから未使用の 無名のvolume については削除してくれる。
ただし、名前をつけたvolumeについては、コンテナから未使用であっても削除してくれない。

$ docker volume prune
WARNING! This will remove anonymous local volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Volumes:
8c85a582e0a29c026e776c886b49493931c76efd73f0da86d23e3a8d665ef6ad
c5dd26002bd5330d01324ec2d87be8c5db71e8f4f8ae3ffa3977be964c0591da
1ad214995cf6b0fa9f3c79689b79ccd79b1607c833a37fec817b0e8c85d0a975

名前を指定して volume の削除 “rm”

不要なvolumeとしてわかっているものは docker volume rm で、名前を指定して削除する。

$ docker volume rm docker-compose_db_data
docker-compose_db_data

docker volume が コンテナからの利用されているかの確認方法

コンテナからボリュームが利用されているかどうかを確認するには、コンテナ側の情報 docker inspect <コンテナ名> で出力される情報を確認する必要がある。
Mounts として出力されるので、内容を確認する。
すべてのコンテナを確認して不要なvolumeを特定する。

$ docker inspect mySQL | jq ".[0].Mounts"
[
  {
    "Type": "volume",
    "Name": "db_data",
    "Source": "/var/lib/docker/volumes/db_data/_data",
    "Destination": "/var/lib/mysql",
    "Driver": "local",
    "Mode": "z",
    "RW": true,
    "Propagation": ""
  }
]
Xserver が お友達紹介割引 で申込みが可能になります。

コメント

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