Macの空き容量が残り6GB…大きなファイルが見つからない謎
ある日、Macから「ストレージの空き容量が少なくなっています」という通知が。確認してみると、245GBのうち238GBを使用していて、残りたったの6.6GB。これはまずい。
ストレージの内訳を見ると、「システムデータ」が121.62GBと異常に大きい。まずはFinderで1GB以上のファイルを検索してみましたが、何も見つかりません。ダウンロードフォルダも空。ゴミ箱も空にした。それなのに空き容量は一向に増えない…。
同じような経験をした開発者の方、いませんか?実はこの「見えない大容量データ」の正体、Dockerの未使用イメージとビルドキャッシュだったのです。
Dockerの公式ドキュメントに、ディスク使用量の管理方法が詳しく記載されています:

なぜDockerがストレージを圧迫するのか
開発者がDockerを使い続けていると、気づかないうちにディスク容量が膨れ上がります。原因は主に3つあります。
未使用のDockerイメージが溜まり続ける
docker-compose up を実行するたびに、必要なイメージが自動でダウンロードされます。MySQL、PostgreSQL、Redis、Node.jsなど、プロジェクトごとに異なるイメージが蓄積されていきます。1つのイメージが数百MBから数GBになることもあり、複数プロジェクトを扱う開発者だと、合計で数十GBに達することも珍しくありません。
ビルドキャッシュが肥大化する
Dockerイメージをビルドするたびに、中間レイヤーがキャッシュとして保存されます。ビルドを高速化するための仕組みですが、古いキャッシュが自動では削除されないため、ひたすら溜まり続けます。
停止中のコンテナが残っている
docker-compose down ではなく docker-compose stop で止めた場合や、docker run で一時的に立ち上げたコンテナは、停止状態のまま残り続けます。これらもディスク容量を消費しています。
まずはDockerのディスク使用量を確認しよう
いきなり削除する前に、Dockerがどれくらいストレージを使っているか確認しましょう。ターミナルで以下のコマンドを実行します:
docker system df実行すると、以下のような結果が表示されます:
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 15 0 8.2GB 8.2GB (100%)
Containers 3 0 1.5GB 1.5GB (100%)
Local Volumes 5 0 2.8GB 2.8GB (100%)
Build Cache 42 0 11.8GB 11.8GB
この例では合計約24GBが「RECLAIMABLE(回収可能)」です。ACTIVEが0なら、現在使用中のリソースはないということ。つまり安全に削除できる状態です。
docker system prune -a で一括クリーンアップ
確認が済んだら、以下のコマンドで未使用リソースを一括削除します:
# 未使用のコンテナ・イメージ・ネットワーク・ビルドキャッシュを一括削除
docker system prune -a実行すると確認メッセージが表示されるので、y と入力してEnterを押します:
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N] y筆者の環境では、Laravel Sail、MySQL、PostgreSQL、Redis、Minio、LocalStack、Seleniumなどの古いイメージが次々と削除され、最終的に「Total reclaimed space: 24.35GB」と表示されました。コマンド1つで24GBも解放できたのです。
削除して大丈夫?リスクと注意点
「こんなにたくさん消して大丈夫なの?」と不安になるかもしれませんが、心配いりません。
削除されるもの・されないもの
| 項目 | 削除される? | 復旧方法 |
|---|---|---|
| 停止中のコンテナ | はい | docker-compose up で再作成 |
| 未使用のイメージ | はい | docker pull で再ダウンロード |
| ビルドキャッシュ | はい | 次回ビルド時に自動再生成 |
| 実行中のコンテナ | いいえ | ― |
| 名前付きボリューム | いいえ | ― |
| ソースコード | いいえ | ― |
ポイントは、ソースコードやデータベースの中身(名前付きボリューム)は削除されないということ。削除されるのはイメージ(設計図)とキャッシュだけなので、必要になったら docker-compose up すれば自動で再ダウンロードされます。ただし再ダウンロードには数分かかるので、プロジェクト作業中は避けましょう。
ボリュームも含めて完全クリーンアップしたい場合
データベースの中身ごとリセットしたい場合は、--volumes オプションを追加します。ただし、DBのデータも消えるので注意してください:
# ボリュームも含めて完全削除(DB データも消えるので注意!)
docker system prune -a --volumesDocker以外にもチェックすべきポイント
Dockerのクリーンアップだけで十分な空き容量が確保できない場合は、以下もチェックしてみてください。
Time Machineのローカルスナップショット
Time Machineは、外付けディスクを接続していなくても「ローカルスナップショット」というバックアップをMac内に保存します。これが数十GBになることも。以下のコマンドで確認できます:
# ローカルスナップショットの確認
tmutil listlocalsnapshots /
# 古いスナップショットの自動削除
tmutil thinlocalsnapshots / 999999999999 4Time Machineを使っていないなら、システム設定からオフにしてしまうのも手です。GitHubやGoogle Driveでバックアップを取っていれば、開発者的には困ることは少ないでしょう。
アプリのキャッシュ
ChromeやSlackなどのアプリは、キャッシュデータを大量に保存していることがあります。Finderの「移動」メニューでOptionキーを押しながら「ライブラリ」を選択し、「Caches」フォルダを確認してみてください。Google ChromeやSlackのキャッシュが数GBに達していることがあります。
再発防止:定期クリーンアップの習慣化
今回のようなストレージ逼迫を防ぐため、月1回程度のDockerクリーンアップを習慣にしましょう。便利なエイリアスを設定しておくと楽です:
# ~/.zshrc に追加
alias docker-cleanup='docker system prune -a -f && echo "✅ Docker cleanup complete!"'
alias docker-usage='docker system df'設定後、source ~/.zshrc で反映すれば、docker-cleanup と打つだけでクリーンアップが実行されます。docker-usage でいつでもディスク使用量を確認できるのも便利です。
まとめ:開発環境は「見えないゴミ」が溜まりやすい
Macのストレージが急にいっぱいになった場合、Finderで大きなファイルを探しても見つからないことがあります。その原因として真っ先に疑うべきはDockerの未使用イメージとビルドキャッシュです。
docker system dfでディスク使用量を確認docker system prune -aで未使用リソースを一括削除- 月1回のクリーンアップをエイリアスで習慣化
- Time Machineのスナップショットやアプリキャッシュも合わせてチェック
開発環境は使い続けるほど「見えないゴミ」が蓄積します。定期的なメンテナンスで快適な開発環境を維持しましょう。
Dockerと開発環境をさらに活用する関連記事
Dockerのクリーンアップを覚えたら、開発環境全体の効率化にもチャレンジしてみましょう:
Docker・開発環境の活用
- Docker+xvfbで仮想ディスプレイ環境を構築!コンテナでGUIテストを実行する – DockerコンテナでのGUIテスト環境構築テクニック
- Mac標準Rubyが古い問題を解決!初心者エンジニアがrbenvでRubyバージョン管理を始める完全ガイド – Mac開発環境のバージョン管理の基本
Mac開発環境の便利ツール
- Ollama Desktop App – ローカルAIモデルをGUI操作できるデスクトップアプリ – ストレージ管理も重要なローカルAI環境の構築ガイド
- FireWally – Apple Intelligence搭載のMac向け無料ファイアウォール – Macのセキュリティとネットワーク管理
- Launchie – macOS向けアプリ起動効率化ツール!カスタマイズ可能なランチャー – Mac作業効率を向上させるランチャーツール
