概要
Dockerのpruneコマンドは、未使用のリソースを削除してシステムをクリーンアップするための強力なツールです。Dockerで困った時の「一からやり直し」の定番コマンドとして知られています。
主要なPruneコマンド
1. docker system prune - 全体的なクリーンアップ
最も包括的なクリーンアップコマンドです。
# 基本的なクリーンアップ(確認プロンプトあり)
docker system prune
# 強制的にクリーンアップ(確認なし)
docker system prune -f
# すべての未使用イメージも削除
docker system prune -a
# ボリュームも含めて完全クリーンアップ
docker system prune -a --volumes
削除対象:
- 停止したコンテナ
- 使用されていないネットワーク
- ダングリングイメージ(タグなし)
- ビルドキャッシュ
2. docker container prune - コンテナ専用
docker container prune -f
削除対象: 停止したコンテナのみ
3. docker image prune - イメージ専用
# ダングリングイメージのみ削除
docker image prune -f
# すべての未使用イメージを削除
docker image prune -a -f
4. docker network prune - ネットワーク専用
docker network prune -f
削除対象: 使用されていないネットワーク
5. docker volume prune - ボリューム専用
docker volume prune -f
削除対象: 使用されていないボリューム
問題解決のためのPrune戦略
軽度の問題 → 個別prune
# ネットワーク問題
docker network prune -f
# コンテナ問題
docker container prune -f
# イメージ問題
docker image prune -f
中度の問題 → system prune
# 基本的なクリーンアップ
docker system prune -f
# より徹底的なクリーンアップ
docker system prune -a -f
重度の問題 → 完全リセット
# すべてを削除(ボリューム含む)
docker system prune -a --volumes -f
# さらに徹底的に
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
docker rmi $(docker images -q)
docker volume rm $(docker volume ls -q)
現在の状況確認
クリーンアップ前に現在の状況を確認しましょう:
# システム全体の使用状況
docker system df
# 詳細な情報
docker system df -v
# コンテナ一覧
docker ps -a
# イメージ一覧
docker images
# ネットワーク一覧
docker network ls
# ボリューム一覧
docker volume ls
安全なクリーンアップ手順
1. 状況確認
docker system df
2. 軽度のクリーンアップ
docker system prune -f
3. 必要に応じてイメージも削除
docker system prune -a -f
4. 最終手段としてボリュームも削除
docker system prune -a --volumes -f
注意点
--volumesフラグの注意
# 危険!データが失われる可能性
docker system prune -a --volumes -f
- 名前付きボリュームのデータも削除される
- データベースのデータが失われる可能性
- 重要なデータがある場合は事前にバックアップを取る
安全な使用のためのチェックリスト
- 重要なコンテナが停止していないか確認
- 必要なデータのバックアップを取得
- 使用中のボリュームがないか確認
- 本番環境では慎重に実行
よくある使用シナリオ
開発環境のリセット
# 開発環境を完全にリセット
docker-compose down
docker system prune -a --volumes -f
docker-compose up -d --build
ディスク容量不足の解決
# 容量確認
docker system df
# クリーンアップ
docker system prune -a -f
ネットワーク問題の解決
# ネットワーク関連の問題
docker-compose down
docker network prune -f
docker-compose up -d
イメージの整理
# 未使用イメージの削除
docker image prune -a -f
トラブルシューティング
よくあるエラーと対処法
1. ネットワークが見つからないエラー
Error response from daemon: failed to set up container networking: network xxx not found
対処法:
docker-compose down
docker network prune -f
docker-compose up -d
2. ポートが既に使用されているエラー
Error response from daemon: driver failed programming external connectivity on endpoint
対処法:
docker container prune -f
docker-compose up -d
3. イメージビルドエラー
failed to solve: process "/bin/sh -c xxx" did not complete successfully
対処法:
docker system prune -f
docker-compose build --no-cache
まとめ
Pruneコマンドの利点
- ディスク容量の節約
- システムの安定性向上
- 環境のリセット
- 問題の根本解決
使用タイミング
- 開発環境のリセット
- ディスク容量不足
- ネットワーク/コンテナの問題
- イメージの整理
- システムの不安定化
推奨される使用パターン
- 軽度の問題 → 個別prune
- 中度の問題 → system prune
- 重度の問題 → 完全リセット
Dockerで困った時の「一からやり直し」の強力なツールとして、pruneコマンドを活用しましょう!
なお、prune系コマンドは「未使用リソースを自動で一括削除」したいときに便利です。一方、rmやrmiコマンドは「特定のコンテナやイメージなどを個別に削除」したい場合に使います。状況に応じて使い分けましょう。