本文へスキップ
BecomeCoder

Dockerコース · 第6章 データを残す · レッスン22

ボリュームの片付け ― rm と prune

ブラウザで完結

導入

ボリュームは「コンテナを消しても残る」のが長所ですが、裏を返すと 放っておくとどんどん溜まって、ディスクを圧迫します。使い終わったボリュームを消す 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 rmdocker system prune、第3章)と合わせて、「使い終わったら消す」を習慣にすると、ディスクがゴミで埋まりません。

注意docker volume rmprune で消したデータは戻りません。本番では、消す前に「これは本当に不要か」「バックアップは取ったか」を必ず確認します。ボリュームは“消えないデータ”を扱う場所だからこそ、削除は慎重に。

やってみよう

  • 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 してからなら消せます。

実際に動かしてみよう

下の端末に docker コマンドを打って Enter を押すと、その場で結果が返ります。本文の手順を実際になぞりながら進めましょう(各レッスンは毎回まっさらな状態から始まり、「最初からやり直す」でいつでも戻せます)。

Docker(シミュレート)

ブラウザ内で docker コマンドを試せる学習用環境を読み込みます(本物のDockerではなく、動きを再現したものです)。
スクロールして表示された時点でも自動で読み込まれます。