メインコンテンツまでスキップ

第05章:イメージの一覧と掃除(images / rmi)🧽🗑️

この章は「Dockerが太ってきた😵💦」を自分でスッキリさせる回です! イメージが溜まる理由を理解して、安全に消す手順まで身につけよう〜✨


この章のゴール🎯

  • docker images / docker image lsイメージ一覧を読める 👀
  • docker rmi / docker image rm必要なものだけ消せる 🧹
  • prune 系で まとめ掃除できる(ただし慎重に!)🧨➡️🧼

1) そもそも「イメージ」が溜まる理由📦📈

イメージは「コンテナの設計図」なので、こんな時に増えがち👇

  • docker run した(必要なイメージを自動で取ってくる)📥
  • docker pull でいろいろ試した🧪
  • 同じ名前で何度も更新して、古い層が残った😅
  • ビルドのキャッシュが増えた(※これは“イメージ”とは別枠でも容量を食う)🍔

「増えるのは自然」なので、たまに掃除が正解です🧼✨


2) まずは現状把握!一覧を見る👀📋

2-1. 一番よく使う:一覧表示

  • docker images短縮形
  • 公式には docker image ls が本体です🙂(どっちでもOK)(Docker Documentation)
docker image ls
## または
docker images

出てくる列の意味(ざっくり)👇

  • REPOSITORY / TAG:名前(例:nginx:alpine)🏷️
  • IMAGE ID:イメージのID(短いハッシュ)🆔
  • CREATED:いつ作られたか🕒
  • SIZE:だいたいのサイズ📦

2-2. “全部”見たいとき(中間イメージも含む)

docker image ls -a

-a は「通常は隠れてるものも見せて」って意味です(Docker Documentation) (掃除のときは役に立つけど、最初は情報量多め😵)


2-3. フィルタで絞る(探しやすい!)🔍✨

Dockerの --filter は基本「KEY=VALUE」です(Docker Documentation)

例:alpine 関連だけ見たい

docker image ls --filter "reference=alpine"

例:タグのない“ぶら下がり”っぽいのだけ見たい(dangling)

docker image ls --filter "dangling=true"

docker image ls のフィルタ条件や --format などは公式にまとまってます(Docker Documentation)


2-4. 表示を見やすく整形(地味に便利)🧑‍💻✨

docker image ls --format "table {{.Repository}}\t{{.Tag}}\t{{.ID}}\t{{.Size}}"

「必要な列だけ」にすると、判断ミスが減ります👍 --format も公式オプションです(Docker Documentation)


3) どれが容量食ってる?を数字で見る📏💾

3-1. Docker全体の使用量を見る

docker system df

これは「Dockerが使ってるディスク量の内訳」を出してくれます(Docker Documentation) さらに詳しく👇

docker system df -v

4) 消す!:rmi / image rm の安全な使い方🗑️🧠

4-1. 基本:名前(タグ)で消す

docker image rm nginx:alpine
## 旧表記
docker rmi nginx:alpine

ここ超重要ポイント👇

  • 複数タグが同じイメージを指してる場合、タグを指定して消すと「タグだけ外れる」ことがあります(イメージ本体が即消えるとは限らない)(Docker Documentation)
  • 逆に、そのタグが最後の1個なら イメージ本体も消える という動きです(Docker Documentation)

4-2. “使ってる最中”は基本消せない(ここで詰まりがち)🪤😵

動いてるコンテナが使っているイメージは、そのままだと消せません。 -f(強制)もあるけど、初心者のうちは「先にコンテナを止めて消す」方が安全です🧯 公式にも「実行中コンテナのイメージは -f なしでは消せない」とあります(Docker Documentation)


4-3. まず“何が使ってるか”を見つける(事故防止)🚦

「このイメージ、どのコンテナが使ってる?」の確認に👇

docker ps -a --filter "ancestor=nginx:alpine"

出てきたコンテナを止めて消してから、イメージを消す流れが安定です🙂🧹


5) まとめ掃除:prune(最強だけど慎重に)🧨🧼

5-1. “まずは軽め”の掃除(danglingだけ)

docker image prune

タグのない不要物を掃除しやすいです🧽 -a を付けると「コンテナに紐づいてないイメージ」を広く消しますが、警告も出ます(Docker Documentation)


5-2. ガッツリ掃除(未使用イメージも)

docker image prune -a

これ、効きます💥 ただし「あとで使うつもりのイメージ」も消える可能性があるので、実行前に docker image lsdocker system df を見てからがおすすめです🧠✨(Docker Documentation)


5-3. “日時で古いものだけ”みたいに絞る(便利)⏳✨

例:24時間より前に作られたものだけ…みたいなフィルタ(コマンドにより扱える条件が違うので注意) ビルドキャッシュ掃除の docker builder pruneuntil=24h の例が公式にあります(Docker Documentation)

docker builder prune --filter "until=24h"

5-4. もっと全部まとめて掃除したい(最終兵器)☠️➡️🧼

docker system prune

これは「停止中コンテナ / 未使用ネットワーク / 使ってないイメージ」などをまとめて消すコマンドです(Docker Documentation) しかも ビルドキャッシュも掃除対象に入ります(表示されるWARNINGにも出ます)(Docker ドキュメント)

さらに危険オプション👇

docker system prune --volumes

--volumes を付けると ボリュームまで消える(= データが消える可能性)ので、ここは本当に慎重に!(Docker ドキュメント)


6) ハンズオン:安全に「掃除できる人」になる🧹😄✨

ステップA:まずは増やしてみる(掃除の練習台)🧪📦

docker pull hello-world
docker pull nginx:alpine
docker pull redis:alpine
docker image ls
docker system df

ステップB:わざと“使ってる状態”を作る🪤

docker run --name web -d nginx:alpine

ここでイメージ削除を試す(たぶん止められる)

docker image rm nginx:alpine

「あ、動いてるからダメか!」を体験できればOK🙆‍♂️(この感覚が大事)


ステップC:正しい順番で片付ける✅🧹

docker stop web
docker rm web
docker image rm nginx:alpine

最後にチェック👇

docker image ls
docker system df

ステップD:軽く prune(安全寄り)🧽

docker image prune

7) AI活用コーナー🤖✨(消しすぎ防止がテーマ!)

7-1. “判断”をAIに手伝わせる(そのまま実行しない!)🧠⚠️

👇みたいに貼って聞くのが強いです

  • docker image ls の結果
  • docker system df -v の結果(重い原因が分かりやすい)

プロンプト例💬

  • 「この docker image ls の結果を、①消してOK候補 ②今は残すべき に分けて理由も書いて」
  • docker image prune -a をすると何が消えそう?危険なものがあれば先に教えて」
  • 「“動いてる/止まってる/残ってる”が混乱してるから、今の状態を整理して手順を番号で」

ポイント:AIは“提案係”、あなたが“最終決定者”👑✨


8) よくある詰まりポイントQ&A🧩😵‍💫

Q1. rmi したのに容量があまり減らない…🤔

A. だいたいこれ👇

  • 同じイメージに別タグが付いてて、タグだけ外れた🪝(Docker Documentation)
  • ビルドキャッシュが本体だった(docker builder prune が効く)🧱(Docker Documentation)
  • “未使用”扱いになってなくて prune されてない(コンテナが残ってる等)🧟‍♂️

Q2. 消しちゃった!戻せる?😱

A. だいたい戻せます🙂✨

  • 公式/公開イメージなら docker pull で再取得📥
  • 自作なら(将来の章の)Dockerfileで docker build で再生成🔁

9) 章末ミニチェック✅🎓

  • docker image ls --filter "reference=ubuntu" みたいな絞り込みができる🔍
  • docker image rmタグだけ外れることがある(複数タグ)🏷️(Docker Documentation)
  • docker system df で「どこが太ってるか」を先に見る📏(Docker Documentation)
  • docker system prune --volumes は“データ飛びうる”ので慎重に💣(Docker ドキュメント)

次の章は「ログを見る(logs)」で、困ったらまずログ👀🪵を身につけます! Dockerが“怖くない道具”になっていくよ〜💪😆✨