Mac で Docker がディスク容量を使いすぎるとき:Docker.raw の解説
Mac では Docker は仮想マシンの中で動いていて、イメージ、コンテナ、ボリューム、ビルドキャッシュはすべて、その仮想マシンのディスク、つまり 1 つの大きなファイルの中にあります。
結論:Docker Desktop のディスクは ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw です。このファイルは削除しないでください。docker system df で中身を確認し、docker … prune コマンドで不要なものを削除して、ファイルの中の空きを増やします。
Docker.raw はなぜあんなに大きく見えるの?
スパースファイルだからです。Finder に表示されるのは実際の使用量ではなく、拡張できる最大サイズ(Docker Desktop で設定した上限)です。実際のサイズは次のコマンドで確認できます。
du -h ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw
Docker の容量を何が使っている?
docker system df
docker system df -v
1 つ目のコマンドは、イメージ、コンテナ、ローカルボリューム、ビルドキャッシュと、それぞれのうちどれだけを回収できるかを表示します。2 つ目は、それらを 1 つずつ一覧表示します。
安全に空き容量を作れるコマンドは?
docker builder prune:どのビルドも使っていないビルドキャッシュ。そのあとのビルドは 1 回だけ遅くなります。docker image prune:dangling イメージ(再ビルドで残った、タグのないイメージ)。-aを付けると、どのコンテナも使っていないイメージをすべて削除します。必要になればまたダウンロードされます。docker container prune:停止中のコンテナ。ボリューム以外の場所でコンテナ内に書き込んだものは失われます。docker volume prune:使われていないボリューム。注意:ボリュームにはデータベースなどのデータが入っています。最近のバージョンでは、-aを付けない限り、匿名ボリュームだけを削除します。docker system pruneは最初の 3 つをまとめて実行します。-aと--volumesを付けると、さらに広く削除します。
prune したら Docker.raw は小さくなる?
たいていは小さくなります。スパースファイルなので、中で解放された領域は macOS に返されます(数分かかることもあります)。上の du コマンドでもう一度確認してください。小さくならない場合は、Docker Desktop を終了して起動し直します。
Docker が使う容量に上限を設定できる?
はい。Docker Desktop で Settings › Resources › Advanced を開き、ディスク使用量の上限を下げます。保存されている量より低くすると、Docker のデータをリセットする必要が出ることがあります。
Docker.raw は削除してもいい?
Docker の中身をすべて失ってもいい場合だけにしてください。イメージ、コンテナ、ボリュームがすべて消えます。Docker Desktop は次回の起動時に空のファイルを作ります。Docker Desktop の Troubleshoot › Clean / Purge data でも同じことができ、こちらのほうがきれいに処理されます。
OrbStack、Colima、Podman のディスクはどこにある?
- OrbStack:
~/.orbstackの下(または設定で選んだデータフォルダ)。同じdockerコマンドがそのまま使えます。 - Colima:
~/.colimaの下にある Lima VM のディスク。colima deleteで VM ごと削除します。 - Podman:マシンのディスクは
~/.local/share/containers/podman/machineの下にあり、podman system pruneで中の空きを増やせます。