Levo ガイド · 開発者向け: その他
Mac で Docker がディスク容量を使いすぎるとき
Mac の Docker は、すべてを 1 つの大きな仮想ディスクファイル Docker.raw に保存します。このファイルは大きくなりますが、自然には小さくなりません。何が使っているかは docker system df で確認し、空けるには docker system prune と docker builder prune を使います。

| 対象 | 確認方法 | 削除しても安全? |
|---|---|---|
| 停止中のコンテナ | docker ps -a | はい。ただし中のものが必要でなければ |
| 未使用のイメージ | docker images | はい。必要になったときに取得または再ビルドされます |
| ビルドキャッシュ | docker builder du | はい。次のビルドは遅くなります |
| ボリューム | docker volume ls | 注意。データベースが入っています |
| ディスクファイル | ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw | 手作業では決して削除しない |
Docker.raw が大きい理由
コンテナは小さな Linux VM で動き、VM のディスクは Mac 上の 1 つのファイルです。Docker Desktop は最大サイズ(60 GB 以上のことが多い)を設定し、イメージの取得やビルドのたびに、ファイルがそこに向かって大きくなります。Finder では、疎ファイルなので実際より大きく見えることがあります。ls -lh は最大サイズを、du -sh は実際に使われている量を表示します。
落とし穴は、イメージを削除すると VM 内の空きは増えるのに、Mac 上のファイルはすぐには小さくならないことです。最近の Docker Desktop は解放したブロックを macOS に返しますが、古い環境や、頻繁な書き換えのあとでは、Settings › Resources からディスクのサイズを変更するか、リセットする必要があるかもしれません。
自分でやる方法
何が容量を使っているかを調べる
docker system df
docker system df -v
最初のコマンドは、イメージ、コンテナ、ボリューム、ビルドキャッシュの合計を、RECLAIMABLE 列つきで表示します。2 つ目はそれぞれを一覧にします。ビルドキャッシュは目立たない存在で、数週間ビルドを続けると、最大の項目になることがよくあります。
空ける
docker container prune
docker image prune -a
docker builder prune
docker system prune
docker container pruneは停止中のコンテナを削除します。docker image prune -aは、コンテナが使っていないすべてのイメージを、タグ付きのものも含めて削除します。-aなしでは、dangling イメージだけを削除します。docker builder pruneはビルドキャッシュを削除します。--allを付けると、タグ付きビルドが使っているキャッシュも含まれます。docker system pruneは、コンテナ、ネットワーク、dangling イメージ、ビルドキャッシュを一度に削除します。--volumesを付けなければ、ボリュームは削除しません。
ボリュームには、データベース、アップロードされたファイル、compose ファイルが名前付きボリュームにマウントしたものが入っています。docker system prune --volumes は、今どのコンテナも使っていないすべてのボリュームを削除します。来週開くプロジェクトの Postgres も含まれます。docker volume ls で一覧を確認し、確認したうえで docker volume rm <name> で 1 つずつ削除してください。
空きを macOS に返す
prune のあと、実際のサイズをもう一度確認します。
du -sh ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw
それでも大きいままなら、Docker Desktop を開き、Settings › Resources で Virtual disk limit を下げるか、Troubleshoot › Clean / Purge data を選んで初期状態に戻します。後者はすべてのイメージ、コンテナ、ボリュームを削除します。Docker の実行中に Docker.raw をゴミ箱へドラッグしないでください。中のものがすべて失われ、VM が壊れることがあります。
OrbStack、Colima、Podman
どれも Docker API で動くので、同じコマンドが使えます。違うのは、ディスクの場所です。
- OrbStack はディスクを自動で縮小し、必要に応じて容量を使います。データは
~/.orbstackにあります。アプリの Settings を確認し、上と同じようにdocker system dfを使います。 - Colima はディスクを
~/.colimaに置きます。サイズはcolima start --disk 100でインスタンスを作成するときに固定されます。colima deleteは VM 全体を削除します。 - Podman は
podman system dfとpodman system pruneを使い、マシンイメージは~/.local/share/containers/podman/machineにあります。
Docker をもう使わないなら、Mac で Docker をアンインストールする方法 を参照してください。ツールチェーンのほかの部分も広く見るには、開発者向けディスククリーンアップ があります。
Levo ならこうします
Levo は、Docker のイメージとビルドキャッシュを Ready to free で独立した種類として、サイズと理由つきで表示します。ディスクの最新インデックスから見つけるので、コマンドを実行しなくても表示され、4 つの prune コマンドのどれを使うか覚えておく必要もありません。
安全かどうかは、あなた自身のエージェントが判断します。何も使っていないイメージとビルドキャッシュは、ごく普通の候補です。ボリュームには取り戻せないデータが入っていることがあるので、自分で確認してください。Levo は、使用中のものを決してクリーンアップしません。エージェントは読むだけで、削除は再確認のあとに Levo が行います。
クリーンアップレベルを選び、削除するものにチェックを入れて、Clean up を押します。Levo で Docker Desktop をアンインストールする場合、確認の手順で大きな残りファイルが一覧表示され、消える前に確認できます。Web 開発者向けの Levo を参照してください。2回まで無料でクリーンアップでき、その後は買い切りのライセンスです。
よくある質問
docker system prune を実行しても安全ですか?
コンテナ、ネットワーク、dangling イメージ、ビルドキャッシュなら安全ですが、次のビルドは遅くなり、一部のイメージは再取得されます。--volumes を付けなければボリュームには触れません。注意が必要なのはこのフラグです。
イメージを削除したのに Docker.raw が大きいままなのはなぜですか?
このファイルは疎ファイルで、VM 内の空きが増えても、必ずしも小さくなりません。実際のサイズは du -sh で確認してください。まだ大きければ、Docker Desktop の Resources 設定で仮想ディスクの上限を下げるか、データをパージします。
Docker.raw を削除してもいいですか?
Docker を起動した状態で Docker Desktop の Troubleshoot メニューから行うか、終了してアンインストールしたあとだけです。手作業でファイルを削除すると、中のすべてのイメージ、コンテナ、ボリュームが消えます。
Mac で Docker にはどれくらいの容量が必要ですか?
何を動かすかによります。イメージを多くビルドするなら 20〜60 GB を見込んでください。Docker Desktop の仮想ディスクの上限が上限値になります。
OrbStack は Docker Desktop よりディスクを使いませんか?
たいていはそうです。必要に応じて増減し、macOS とファイルを共有するからです。それでもイメージ、ビルドキャッシュ、ボリュームは保持するので、docker system df と prune はそこでも使えます。