要点
- Docker Desktopは、すべてのイメージ、コンテナ、ボリューム、ビルドキャッシュを、~/Library/Containers/com.docker.docker内のDocker.rawという1つのディスクイメージに保存しています。
- Docker.rawはスパースファイルです。Finderとls -lは最大サイズを表示し、duは実際に使用している容量を表示します。
- 縮小するには、ファイルを削除するのではなく、Docker内からdocker system pruneを実行します。解放された容量は数分以内にmacOSに戻ります。
- docker system pruneは、--volumesを付けない限りボリュームを残します。付けた場合でも、削除されるのは匿名ボリュームだけです。
- ディスク使用量の上限を下げたり「Clean up data」を使ったりするとディスクイメージが消去されるため、どちらも最終手段と考えてください。
MacでDocker Desktopのディスクイメージを縮小する方法
- 実際のサイズを測る. du -h ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.rawを実行し、最大サイズではなく実際の使用量を確認します。
- 何が容量を使っているかを確認する. Docker Desktopを起動した状態でdocker system dfを実行し、イメージ、コンテナ、ローカルボリューム、ビルドキャッシュと、それぞれの再利用可能な容量を一覧表示します。
- ビルドキャッシュを消去する. docker builder pruneを実行します。キャッシュはビルド時に必要に応じて作り直されるため、次回のビルドが遅くなるだけです。
- 使われていないコンテナ、ネットワーク、イメージを削除する. docker system prune -aを実行します。停止中のコンテナ、使われていないネットワーク、コンテナが使用していないすべてのイメージ、未使用のビルドキャッシュが削除されます。ボリュームは残ります。
- ボリュームは個別に確認する. docker volume lsを実行し、必要なデータをバックアップしてから、使わなくなったボリュームをdocker volume rmで削除します。
- 数分待ってから再確認する. Docker Desktopが解放したブロックをmacOSに返すまで数分待ち、もう一度Docker.rawに対してdu -hを実行します。
Mac版Docker Desktopは、小さな仮想マシンの中でLinuxコンテナを動かしています。この仮想マシンは、イメージ、コンテナ、ボリューム、ビルドキャッシュのすべてをDocker.rawという1つのディスクイメージファイルに保存しています。このファイルは数十GBにまで膨らむことがあります。解決策はファイルを削除することではなく、Docker内からpruneすることです。そうすれば、Docker Desktopが解放した容量をmacOSに返します。
2026年10月時点で、この内容はmacOS 27 Golden Gate、26 Tahoe、15 Sequoia、14 Sonoma上の現行Docker Desktopに当てはまります。
Docker.rawの場所と、本当のサイズ
デフォルトでは、ディスクイメージは次の場所にあります:
~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw
場所を移動した場合は、Docker Desktop > Settings > Resources > Advancedで現在の場所を確認できます。
Docker.rawはスパースファイルです。論理サイズはディスクイメージが到達しうる最大値ですが、Macの容量を実際に使っているのは、Dockerが書き込んだブロックだけです。Finderとls -lは最大値を表示するので、ファイルが驚くほど大きく見えることがあります。実際の値を確認するには:
cd ~/Library/Containers/com.docker.docker/Data/vms/0/data
ls -klsh Docker.raw
du -h Docker.raw
ls -sの出力では、最初の数字が実際に割り当てられている容量で、サイズの列は最大値です。duは割り当て済みの容量だけを表示します。Docker自身のMac向けFAQでも、同じls -klshによる確認方法が紹介されています。
何が容量を使っているかを確認する
Docker Desktopを起動した状態で、Dockerに内訳を尋ねます:
docker system df
docker system df -v
1つ目のコマンドは、Images、Containers、Local Volumes、Build Cacheを、合計サイズと、使われていない分を示すRECLAIMABLE列付きで表示します。-v付きでは、イメージ、コンテナ、ボリュームが1つずつ表示されるので、忘れていた10GBのイメージや、古いプロジェクトの大きなボリュームを見つけやすくなります。
穏やかな方法から徹底的な方法まで
ここで紹介するコマンドはすべて、完全に削除します。Dockerのオブジェクトにゴミ箱はありません。イメージは再度pullしたりビルドしたりできますが、ボリュームは取り戻せません。
ビルドキャッシュ
ローカルでイメージをビルドしている場合、ビルドキャッシュが最大の項目であることがよくあります。
docker builder prune
確認を求められたあと、使われていないビルドキャッシュが削除されます。--allを付けると、より徹底的に整理されます。キャッシュがたまるまでのあいだ、次回以降のビルドには時間がかかります。
停止中のコンテナ、未使用のネットワークとイメージ
docker system prune
docker system prune -a
オプションなしのdocker system pruneは、停止中のコンテナ、どのコンテナも使っていないネットワーク、dangling(タグなし)イメージ、未使用のビルドキャッシュを削除します。-aを付けると、少なくとも1つのコンテナに使われているもの以外のすべてのイメージも削除され、通常はこれが最も多くの容量を解放します。あとで必要になったものは、再度pullまたはビルドされます。詳しくはDockerのpruneのガイドとdocker system pruneのリファレンスをご覧ください。
ボリューム:削除する前に確認
ボリュームには、ローカルのデータベースなど、作り直せないデータが入っています。Dockerがデフォルトでボリュームを削除しないのはそのためです。
docker volume ls
docker volume rm <name>
docker system prune --volumesで追加で削除されるのは、どのコンテナも使っていない匿名ボリュームだけです。docker volume pruneも同じ動作で、docker volume prune --allを使うと、どのコンテナも使っていない名前付きボリュームも削除されます。大切なものは先にバックアップしてください。
| コマンド | コンテナ | イメージ | ビルドキャッシュ | ボリューム |
|---|---|---|---|---|
docker system prune |
停止中のもの | danglingのみ | 未使用のもの | 残る |
docker system prune -a |
停止中のもの | 未使用のすべて | 未使用のもの | 残る |
docker system prune -a --volumes |
停止中のもの | 未使用のすべて | 未使用のもの | 未使用の匿名ボリューム |
docker volume prune --all |
— | — | — | 未使用のすべて |
容量が戻らないとき
pruneは仮想マシン内のブロックを解放し、Docker DesktopがそれをバックグラウンドでmacOSに返します。Dockerによれば、これには数分かかることがあります。du -h Docker.rawで再確認してください。しばらくしても数値が変わらない場合は、Docker Desktopを終了して開き直します。
Finderは、ファイルの中で何が起きても最大サイズを表示し続けます。進み具合はFinderではなくduで判断しましょう。
ディスクイメージに上限を設ける、または移動する
Settings > Resources > Advancedで、最近のバージョンではDisk usage limit(古いバージョンではDisk image size)という設定が使えます。ディスクイメージが拡大できる最大値を決めるものです。DockerのMac向けFAQには、最大値を小さくすると現在のディスクイメージが削除されると警告があり、中のイメージ、コンテナ、ボリュームもすべて失われます。先にpruneし、必要なものを書き出してから、上限を下げてください。
同じ画面にはDisk image locationもあります。Browseボタンを使って、Docker.rawを容量の大きい内蔵ボリュームや外付けSSDに移動できます。Finderでファイルを移動しないでください。Docker Desktopがファイルの場所を見失うことがあります。
リセットという選択肢
Docker DesktopのTroubleshoot画面(メニューバーのクジラのメニュー、またはDashboard右上付近の疑問符アイコンから開きます)にはClean up dataがあります。古いバージョンではClean / Purge dataという名前です。Dockerのトラブルシューティングのページによれば、設定は残したまま、ローカルのコンテナとイメージをすべて破棄します。ボリュームも同じディスクイメージ内にあるため、一緒に消えると考えてください。一からやり直しても構わない場合にだけ使いましょう。
同じメニューにあるReset to factory defaultsは、すべての設定もリセットします。
ディスク容量の管理方法が異なる代替ツール
- OrbStackは、コンテナ、イメージ、Linuxマシンを
~/Library/Group Containers/HUAQ24HBR6.dev.orbstack/dataに保存します。ドキュメントによれば、動的なディスク管理を採用しており、使用量は必要に応じて増減します。整理はOrbStackから、または同じdockerコマンドで行います。データファイルを削除すると、中身はすべて失われます。 - Colimaは無料のコマンドライン型ランタイムで、仮想マシンを
~/.colimaに保存します。dockerのpruneコマンドは同じように使え、colima pruneはColimaがキャッシュしたダウンロードを消去し、colima deleteはプロファイルをすべてのデータごと削除します。
どちらも標準のdocker CLIを使うため、prune、ボリューム、ビルドキャッシュについての上記の説明はそのまま当てはまります。
MoreRoomでできること
MoreRoomの無料版は、Docker Desktopのディスクイメージを見つけて「先に確認」のラベルを付け、ファイルを削除するのではなくpruneするよう案内します。整理を選ぶと、MoreRoomはDocker純正のdocker system prune --all --forceを実行します。停止中のコンテナ、未使用のネットワーク、未使用のイメージ、ビルドキャッシュが削除され、ボリュームは残ります。このコマンドは元に戻せないため、その旨が表示されます。MoreRoomはOrbStackとColimaのデータも認識し、「先に確認」のラベルを付けます。
MoreRoomがDocker.rawを削除したり、ボリュームを削除したり、Dockerのディスク使用量の上限を変更したりすることはありません。Proでは、複数の項目をまとめて整理できるコレクターと、目標モードが使えます。
よくある質問
Docker.rawを削除してもいいですか?
削除はできますが、中にあるすべてのイメージ、コンテナ、ボリュームが失われ、Docker Desktopは空のファイルを新たに作成します。代わりにDocker内からpruneしてください。本当に一からやり直したい場合は、Docker Desktopの「Troubleshoot」メニューにある「Clean up data」を使えば、設定は残ります。
FinderでのDocker.rawのサイズが、Dockerの報告よりずっと大きいのはなぜですか?
Docker.rawがスパースファイルだからです。Finderとls -lは、ディスク使用量の上限で決まる最大サイズを表示します。一方、duとls -sは、実際にディスクに書き込まれたブロックを表示します。
docker system pruneでボリュームは削除されますか?
デフォルトでは削除されません。--volumesを付けると、どのコンテナも使っていない匿名ボリュームも削除されます。自分で作成したデータベース用ボリュームなどの名前付きボリュームは、docker volume prune --allかdocker volume rmでしか削除されません。
pruneしたのに空き容量が増えないのはなぜですか?
Docker Desktopは解放した容量をバックグラウンドでmacOSに返すため、数分かかることがあります。Docker.rawに対してdu -hを実行して再確認してください。それでも変わらなければ、Docker Desktopを再起動します。また、容量が解放されるのはイメージが実際に削除されたときだけで、タグを外しただけでは解放されません。
ディスク使用量の上限を下げても安全ですか?
中身を失っても構わない場合に限ります。DockerのMac向けドキュメントには、最大サイズを小さくすると、現在のディスクイメージがその中のイメージ、コンテナ、ボリュームごと削除されると明記されています。