Docker for Mac におけるディスク使用¶
Docker Desktop で Linux コンテナとイメージを保管するのは、Mac ファイルシステム内の単一の大きな「ディスク・イメージ」ファイルです。これは Linux 上の Docker が /var/lib/docker
ディレクトリにコンテナとイメージを保管するのと異なります。
ディスクイメージファイルはどこに?¶
ディスクイメージファイルの場所をさがすには、 Docker アイコンから Preferences > Resources > Advanced を選択します。
Advanced タブに、ディスクイメージの場所が表示されています。 またディスクイメージの最大サイズや、現在消費しているディスクイメージ容量も表示されています。 なおファイルの利用容量のことを最大ファイルサイズと表現しているツールがありますが、実際のファイルサイズとして表現していないから誤りです。
ファイルが大きすぎる場合¶
ディスクイメージファイルが大きすぎる場合、次の対処ができます:
- より大きなドライブに移動
- 不要なコンテナやイメージを削除、あるいは
- ファイルに割り当て可能な最大サイズを減らす
大きなドライブにファイルを移動¶
ディスクイメージファイルを別の場所に移動するには:
- Preferences > Resources > Advanced を選択
- Disk image locaition セクション内で、 Browse をクリックし、ディスクイメージの新しい場所を選択
- 設定を反映するには 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 です。
ファイルに割り当て可能な最大サイズを減らす¶
ディスクイメージファイルの最大サイズを減らすには:
- Docker アイコンから Preferences > Resoruces > Advanced を選択
- Disk image size セクションで、スライダーを調整。この変更によって、ディスクイメージに割り当てる最大容量を変更できる。スライダーを下限にセット
- Apply & Restart をクリック
最大サイズを減らした場合、現在のディスクイメージファイルは削除されます。 つまりすべてのコンテナーとイメージを失うことになります。
参考
- Disk utilization in Docker for Mac
- https://docs.docker.com/docker-for-mac/space/