1. 導入:なぜDockerの掃除が必要なのか?
開発中に何度もコンテナのビルドや実行を繰り返していると、気がつかないうちにローカルPCのディスク容量が「Docker関連のデータ」で圧迫されてしまいます。特にビルドの失敗や更新を繰り返すと、中身のないイメージ(dangling images)や古いキャッシュが蓄積されます。これらを放置すると、PCの動作が重くなったり、新しいイメージをダウンロードできなくなったりする原因になります。今回紹介する「docker system prune」は、そんな不要なゴミを一括で削除し、ディスク容量を劇的に回復させるための必須コマンドです。
2. 基礎知識:Dockerが溜め込む「ゴミ」の正体
Docker環境において、以下の要素がディスクを占有します。
・停止中のコンテナ: 終了したまま放置されているコンテナ。
・dangling images(タグのないイメージ): 新しいビルドにより置き去りにされた、名前を持たない古いイメージの断片。
・未使用のネットワーク: コンテナと紐付いていない、不要になったブリッジネットワーク。
・ビルドキャッシュ: Dockerfileをビルドする際に生成される中間層のデータ。
これらを一つずつ手動で消すのは大変ですが、pruneコマンドを使えば一瞬で整理可能です。
3. 実装/解決策:pruneコマンドの使い方
まずは、現在のディスク使用量を確認してみましょう。ターミナルで「docker system df」と入力すると、現在どれくらいの容量をDockerが使っているか表示されます。
その後、以下のコマンドを実行することで、未使用のリソースが一括削除されます。
4. サンプルプログラム:安全かつ効率的な削除コマンド
以下のコマンドは、実際の開発現場で最もよく使われるものです。コピーしてターミナルで実行してみてください。
1. まずは現在のディスク使用状況を確認します docker system df 2. 未使用のコンテナ、ネットワーク、イメージを削除します --force(または -f)を付けることで、確認プロンプトをスキップして即座に実行します docker system prune -f 3. さらにもう一歩踏み込んで、ビルドキャッシュや未使用の全イメージも削除する場合 -a を追加すると、コンテナから参照されていない全てのイメージを対象にします docker system prune -a --volumes -f
5. 応用・注意点:現場での運用ルール
・「-a」オプションの注意点: 「-a」を付けると、現在停止中のコンテナで使用していない全てのイメージが削除されます。もし「あとで使うかもしれない古いバージョンのイメージ」がある場合は、消えてしまうため注意が必要です。
・ボリュームの扱い: 「–volumes」オプションは、データベースのデータなど、永続化したいデータまで削除してしまう可能性があります。重要なデータがマウントされていないか、必ず確認してから実行してください。
・定期メンテナンス: 開発環境では週に一度など、定期的に「docker system prune」を実行する習慣をつけると、ディスク容量不足によるトラブルを未然に防ぐことができます。
まずは「docker system prune」を試して、快適な開発環境を取り戻しましょう!

コメント