Docker for Mac におけるディスク使用量

Docker Desktop で Linux コンテナとイメージを保管するのは、Mac ファイルシステム内の単一の大きな「ディスク・イメージ」ファイルです。これは Linux 上の Docker が /var/lib/docker ディレクトリにコンテナとイメージを保管するのと異なります。

ディスクイメージファイルはどこに?

ディスクイメージファイルの場所をさがすには、 Docker アイコンから Preferences > Resources > Advanced を選択します。

Advanced タブでディスクイメージの場所を表示します。また、ディスクイメージの最大サイズと、ディスクイメージが消費している実際のディスクサイズの両方表示します。なお他のツールでは、ファイルサイズが最大化する観点から、実際に使用しているファイルサイズではなく、ファイルが確保するサイズを表示している場合もあります。

ファイルが大きすぎる場合

ディスクイメージファイルが大きすぎる場合、次の対処ができます:

  • より大きなドライブに移動
  • 不要なコンテナやイメージを削除、あるいは
  • ファイルに割り当て可能な最大サイズを減らす

大きなドライブにファイルを移動

ディスクイメージファイルを別の場所に移動するには:

  1. Preferences > Resources > Advanced を選択
  1. Disk image locaition セクション内で、 Browse をクリックし、ディスクイメージの新しい場所を選択
  1. 設定を反映するには Apply & Restart をクリックします。

(macOS の)Finder でファイルディレクトリを移動しないでください。移動しても、 Docker Desktop はファイルを追跡できません。

不要なコンテナやイメージを削除

不要なコンテナやイメージがないかどうか確認します。クライアントとデーモン API がバージョン 1.25 以降で動いていれば(クライアントで docker version コマンドを実行し、クライアントとデーモンの API バージョンを確認できます )、次のコマンド実行によって詳細な容量の利用状況が分かります。

docker system df -v

あるいは、イメージ一覧を表示します。

$ docker image ls

そして、次にコンテナ一覧を表示します。

$ docker container ls -a

もしも不要なものが大量にあれば、次のコマンドを実行します。

$ docker system prune

このコマンドは停止済みコンテナ、使用していないネットワーク、派生イメージ、構築キャッシュをすべて削除します。

ホストに依存するディスクイメージファイル形式によっては、容量改善のために数分の時間がかかることもあります。

  • ファイル名が Docker.raw :ホスト上のスペース改善は数秒以内に終わります。
  • ファイル名が Docker.qcow2 :バックグラウンド処理が進行し、数分後に空き容量が増えます。

容量の解放は、イメージを削除した時のみです。実行中のコンテナ内でファイルを削除しても、自動的に空き容量は解放されません。任意のタイミングで容量を確保をしたければ、次のコマンドを実行します。

$ docker run --privileged --pid=host docker/desktop-reclaim-space

多くのツールでは、実際に使用しているファイルサイズではなく、ファイルが確保するサイズを表示する場合があるため、注意してください。ホスト上のファイルが実際に使用している容量を確認するには、ターミナル上で次のコマンドを実行します:

$ cd ~/Library/Containers/com.docker.docker/Data
$ cd vms/0/data
$ ls -klsh Docker.raw
2333548 -rw-r--r--@ 1 username  staff    64G Dec 13 17:42 Docker.raw

この例では、ディスクの実際のサイズは 2333548 KB ですが、最大のディスクサイズは 64 GB です。

ファイルに割り当て可能な最大サイズを減らす

ディスクイメージファイルの最大サイズを減らすには:

  1. Docker アイコンから Preferences > Resoruces > Advanced を選択
  1. Disk image size セクションで、スライダーを調整。この変更によって、ディスクイメージに割り当てる最大容量を変更できる。スライダーを下限にセット
  1. Apply & Restart をクリック

最大容量を変更すると、使用中のディスクイメージファイルは削除されます。つまり、全てのコンテナとイメージは失われます。

参考

Disk utilization in Docker for Mac
https://docs.docker.com/docker-for-mac/space/