第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 ls と docker system df を見てからがおすすめです🧠✨(Docker Documentation)
5-3. “日時で古いものだけ”みたいに絞る(便利)⏳✨
例:24時間より前に作られたものだけ…みたいなフィルタ(コマンドにより扱える条件が違うので注意)
ビルドキャッシュ掃除の docker builder prune は until=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が“怖くない道具”になっていくよ〜💪😆✨