Dockerで特定のコンテナが使っているvolumeを消す時にdocker volume rm <Volume名>
で消すことができますが、Volumeに名前をつけてない場合、どのDockerコンテナで使っているかわからず削除に迷ったのでまとめておきます。
環境
macOS: 10.13.6
docker: 18.09.2
Volume名を確認
docker volume ls
でVolume名を確認できますが名前をつけていないとhash値で表示されます。
docker volume ls
DRIVER VOLUME NAME
local 24e0853786a7e954875ccfbfaa8b230535e31cc9257883918b4c7b41f837f094
local 619f0e516ca2506d6129b4b0e61f1685d6bf868f1165b6d7535e532a793014c9
local 950c020c36d49386417e12053277ea3bea1d6198de1dede52942530e26a6d62e
local adad36583c083e30f82560a6b1420527ab593360f05da2e4eb03b10266f60318
local ba52e56e07d33e91990c30de4a437e50bd0af3f948e6fbc2b5c9f4a25af09e0d
・ ・
・ ・
・ ・
local hoge_data1
local hoge_data2
hoge_data1のように名前をつけていれば、どのコンテナで使っているのかわかるので docker volume rm hoge_data1
のように削除してあげればOKですが、hash値だとどのコンテナで使っているかわからない、、、
なので別の方法でコンテナとVolumeの対応を探す必要があります。
docker inspect
docker inspect <container ID>
でコンテナの詳細情報を確認でき、Volume名も確認できます。
以下の例だとMounts
の"Type": "volume"
の箇所がvolumeに関する情報になり、
e01b1984250560b6f648f688e8a941e15949349feeabd5896fa8f80194486f0f
がvolume名になります。
このあたりの見え方はバージョンや使っている環境で多少変わってくるかもしれません。
[
{
"Id": "f2292235330978eb3ab546ee453312a635bff66a12ce55f36e8a693a79f4faed",
"Created": "2019-05-26T03:47:04.0594156Z",
"Path": "docker-entrypoint.sh",
・
・
・
"Mounts": [
{
"Type": "volume",
"Name": "e01b1984250560b6f648f688e8a941e15949349feeabd5896fa8f80194486f0f",
"Source": "/var/lib/docker/volumes/e01b1984250560b6f648f688e8a941e15949349feeabd5896fa8f80194486f0f/_data",
"Destination": "/var/lib/mysql",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
docker volume rm
volume名を確認できれば、docker volume rm
で削除してあげれば完了です。
$ docker volume rm e01b1984250560b6f648f688e8a941e15949349feeabd5896fa8f80194486f0f
参考