これで解決!Docker Desktop for Macのディスク容量を小さくする方法【2026年版】
先日、Docker Desktop for Mac を使っていたところ、Mac のストレージ残量アラートが突然表示されました。docker system df でコンテナやイメージの使用量を確認しても大して多くない…なのに Finder で確認すると ~/Library 配下のファイルが数十GBを占有している。調べてみると Docker.raw というファイルが 60GB 近くに膨らんでいました。
これは「仮想ディスクのデータを消しても、外側のファイルは縮まない」という Docker Desktop の仕組みが原因です。古いバージョンでは Docker.qcow2 というファイルで同じ問題が起きていましたが、現在の Docker.raw 形式でも同様の現象が発生します。
この記事では、実際に試した手順で Docker Desktop for Mac の仮想ディスクを縮小する方法を解説します。Docker Desktop 4.x 以降の最新UIを前提に、GUIとコマンドラインの両方から対処できます。

この記事で解決できること
- ✅
docker system pruneでコンテナ・イメージ・ボリュームを一括削除する方法 - ✅ Docker Desktop GUI の「Reclaim disk space」機能で仮想ディスクを圧縮する方法
- ✅ コマンドラインで
docker/desktop-reclaim-spaceを実行する方法 - ✅ 肥大化を防ぐための設定(ディスク上限の設定・VirtioFS の活用)
動作確認環境: macOS Sequoia 15.x / Docker Desktop 4.38(2026年3月時点)
なぜ Docker Desktop for Mac のディスクは肥大化するのか?
仮想ディスクファイルの仕組み
Docker Desktop for Mac は、Linux コンテナを動かすために仮想マシンを内部で使っています。コンテナ・イメージ・ボリュームはすべてこの仮想マシン内に保存され、Mac からは単一の大きなファイルとして見えます。
従来(Docker Desktop 3.x 以前)は Docker.qcow2 という形式でしたが、現在は Docker.raw 形式に移行されています。ファイルの場所はここです:
~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw
削除してもファイルが縮まない理由
docker system prune や docker image rm でデータを削除しても、Docker.raw ファイルのサイズ(macOS から見た「割り当て済みサイズ」)はすぐには小さくなりません。
これは仮想ディスクの特性によるもので、内部のデータを削除しても外側のファイルは自動で縮小されないからです。ファイルシステム上の「空き領域」が増えるだけで、macOS からは依然として大きなファイルとして占有されます。
| ディスク形式 | 空き領域の解放タイミング |
|---|---|
| Docker.raw | 数秒以内に自動解放(sparse file形式) |
| Docker.qcow2 | バックグラウンドプロセスで数分後に解放 |
現在主流の Docker.raw は macOS の sparse file として実装されており、理論上は削除後すぐに解放されますが、実際にはコンテナが停止・削除された後に Docker を再起動するか、明示的に「Reclaim disk space」を実行する必要があります。

ステップ1:現状の確認
まず現在の状況を確認します。
Docker 内部の使用状況を確認する
docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 12 3 8.2GB 5.1GB (62%)
Containers 5 2 145MB 110MB (76%)
Local Volumes 18 4 2.3GB 1.8GB (78%)
Build Cache 48 0 1.1GB 1.1GB
RECLAIMABLE の列が「削除すれば回収できる容量」です。
macOS から見たファイルの実サイズを確認する
cd ~/Library/Containers/com.docker.docker/Data/vms/0/data
ls -klsh Docker.raw
22G -rw-r--r-- 1 user staff 60G Mar 20 10:23 Docker.raw
左の数値(22G)が実際にディスクを占有しているサイズ、右の数値(60G)が論理上の最大サイズです。この2つの差がある場合、sparse file として未使用領域が予約されている状態です。
ステップ2:不要なデータを削除する(docker system prune)
基本的な prune コマンド
使っていないコンテナ・ネットワーク・ダングリングイメージをまとめて削除します:
docker system prune
確認プロンプトが表示されます:
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- unused build cache
Are you sure you want to continue? [y/N]
y を入力すると処理が実行され、末尾に回収できた容量が表示されます:
Total reclaimed space: 3.2GB
ボリュームも含めて完全に削除する
ボリュームも含めて全て削除したい場合は --volumes フラグを追加します:
docker system prune --volumes
注意:
--volumesを使うと、どのコンテナにも使われていないボリュームが全て削除されます(起動中のコンテナに接続されているボリュームは削除されません)。データベースのデータなど、停止中のコンテナのボリュームに保存しているデータも失われるため、使用前に必ずバックアップを取ってください。
使っていないイメージをすべて削除する
タグなしのイメージだけでなく、現在どのコンテナにも使われていないイメージ(未参照イメージ)もまとめて削除するには:
docker system prune -a
これでかなりの容量を回収できます。

ステップ3:仮想ディスクを圧縮する(Reclaim disk space)
docker system prune でデータを削除しても、Docker.raw ファイル自体が縮まっていない場合は、以下の方法で仮想ディスクを圧縮します。
方法A:Docker Desktop GUI から実行する(推奨)
- Docker Desktop のメニューバーアイコンをクリック
- Settings(設定) を開く
- 左メニューから Resources(リソース) → Advanced を選択
- 「Disk image size」 セクション内の 「Reclaim disk space」 ボタンをクリック

このボタンをクリックすると Docker Desktop が内部の仮想ディスクを最適化し、実際に使用しているサイズまで縮小します。処理中は Docker が一時停止するため、実行タイミングに注意してください。
方法B:コマンドラインから実行する
GUI が使えない環境や、スクリプトから自動化したい場合はコマンドで実行できます:
docker run --privileged --pid=host docker/desktop-reclaim-space
このコマンドは特権コンテナを使ってホスト側の仮想ディスクを最適化します。実行後、Docker Desktop を再起動すると効果が反映されます。
実行前後の比較
# 実行前
ls -klsh ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw
# 例: 24G Docker.raw (論理サイズ: 60G)
# docker system prune -a を実行後
# Reclaim disk space 実行後
ls -klsh ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw
# 例: 9G Docker.raw (論理サイズ: 60G)
実際の占有サイズが大幅に削減されているのが確認できます。
ステップ4:ディスク上限を設定して肥大化を予防する
GUI でディスク上限を設定する
Settings > Resources > Advanced の「Disk image size」スライダーで、仮想ディスクの最大サイズを設定できます。
デフォルトは非常に大きな値(システムディスクの空き容量に依存)に設定されていることが多いため、用途に応じて 50〜100GB 程度に制限すると管理しやすくなります。
推奨値の目安:
- 個人開発・学習用: 30〜50GB
- 複数プロジェクト: 50〜100GB
- 大規模開発: 100GB以上
重要な注意: ディスク上限を 下げる 操作を実行すると、現在の Docker.raw ファイルが削除され、保存されているコンテナ・イメージ・ボリュームが全て失われます。上限を下げる場合は、必要なイメージを事前に
docker saveでバックアップするか、再度プルできる環境を確認してから実行してください。上限を 上げる 分には既存データへの影響はありません。

VirtioFS を使ってパフォーマンスを改善する
Docker Desktop 4.6 以降、macOS では VirtioFS がデフォルトのファイル共有方式になっています。VirtioFS は従来の gRPC FUSE や osxfs より大幅に高速で、ファイル I/O が最大 98% 速くなるという報告もあります。
設定の確認・変更は以下の場所から:
- Settings > General
- 「Choose file sharing implementation for your containers」が VirtioFS になっていることを確認
選択肢:
- VirtioFS(推奨): 最速、macOS 12.5以上が必要
- gRPC FUSE: 中程度の速度、安定性重視
- osxfs: 旧来の方式、使用非推奨
VirtioFS はディスク容量の直接削減には関係しませんが、コンテナのI/O効率が上がることで同じ作業でも不要なディスク書き込みが減り、長期的な肥大化抑制につながります。
よくある状況と対処法
「docker system prune しても容量が減らない」
原因: 起動中のコンテナが使っているイメージやボリュームは prune で削除されません。
# 起動中のコンテナ一覧を確認
docker ps
# すべてのコンテナを停止してから prune を実行
docker stop $(docker ps -q)
docker system prune -a --volumes
「設定でディスク上限を下げようとするとエラーになる」
原因: 現在の使用量が設定しようとしている上限値を超えている場合に発生します。
# まず現在の使用量を確認
docker system df
# 不要なデータを削除してから上限を変更する
docker system prune -a
「Reclaim disk space を実行しても Docker.raw が縮まない」
Docker.raw は sparse file のため、ls コマンドで見える論理サイズ(最大サイズ)は変わらず、実際の占有サイズ(左の数値)だけが変化します。
# 実サイズの確認方法(左がディスク占有サイズ)
ls -klsh ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw
論理サイズ(60G など)が縮小しない場合は正常です。重要なのは左の実サイズが小さくなっているかどうかです。
まとめ
Docker Desktop for Mac のディスク容量削減の手順をまとめます。
| 手順 | コマンド / 操作 | 効果 |
|---|---|---|
| 1. 現状確認 | docker system df |
削除可能な容量を把握 |
| 2. データ削除 | docker system prune -a --volumes |
不要なイメージ・コンテナ・ボリュームを削除 |
| 3. 仮想ディスク圧縮 | Settings > Reclaim disk space | Docker.rawの実サイズを縮小 |
| 4. 上限設定 | Settings > Disk image size | 今後の肥大化を予防 |
- 主な原因: 仮想ディスクファイル(Docker.raw)はデータを削除しても自動で縮まない
- 最短の解決策:
docker system prune -a後に「Reclaim disk space」を実行する - 再発防止: ディスク上限を設定し、定期的に
docker system pruneを実行する習慣をつける
Docker Desktop のバージョンアップに伴い、過去の「Docker.qcow2」時代の情報は古くなっています。現在は Docker.raw + VirtioFS の組み合わせが標準であり、GUI から手軽にディスク管理ができます。定期的なクリーンアップで快適な開発環境を維持しましょう。





