導入
ボリュームは「コンテナを消しても残る」のが長所ですが、裏を返すと 放っておくとどんどん溜まって、ディスクを圧迫します。使い終わったボリュームを消す docker volume rm、未使用のものをまとめて掃除する docker volume prune を覚えて、片付けまでを1周にしましょう。
説明
いらなくなったボリュームは docker volume rm <名前> で消します。ただし——使用中のコンテナがあると消せません(大事なデータを誤って消さないための安全装置です)。
docker volume create tmpdata
docker volume rm tmpdata
もし、そのボリュームを使っているコンテナが動いていると、こう断られます。
flowchart LR
A["docker volume rm dbdata"] --> B{"使っている<br/>コンテナがある?"}
B -->|"ある"| C["❌ volume is in use<br/>先にコンテナを消せ"]
B -->|"ない"| D["✅ 削除"]
だから順番は「コンテナを消す → ボリュームを消す」。逆はできません。これはうっかり事故を防ぐ設計です。
どのコンテナからも使われていないボリュームをまとめて消すには docker volume prune を使います。掃除の定番です。
docker volume prune
コンテナの片付け(docker rm/docker system prune、第3章)と合わせて、「使い終わったら消す」を習慣にすると、ディスクがゴミで埋まりません。
注意:
docker volume rmやpruneで消したデータは戻りません。本番では、消す前に「これは本当に不要か」「バックアップは取ったか」を必ず確認します。ボリュームは“消えないデータ”を扱う場所だからこそ、削除は慎重に。
やってみよう
docker volume create tmpdataを作ってからdocker volume rm tmpdataで消し、docker volume lsから消えることを確認しましょう。- 次に
docker run -d -v keepdata:/data --name app nginxでボリュームを使うコンテナを起動し、docker volume rm keepdataが「in use」で断られることを体験してください。docker rm -f appしてからなら消せます。