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 が お友達紹介割引 で申込みが可能になります。
コメント