docker-in-docker が大量のディスク容量を使用するのはなぜですか?

docker-in-docker が大量のディスク容量を使用するのはなぜですか?

私は、Home Assistant アドオンを開発するために、VS Code 開発コンテナを頻繁に実行しています。この開発コンテナは Docker (ホスト Docker 内) を実行します。数時間作業した後、ホスト Docker のディスク容量が不足し、さまざまな問題が発生します。ここでは、この開発コンテナが 52 GB を使用していることが示されていますが、これは過剰であると考えられます。

% docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          1         1         1.333GB   0B (0%)
Containers      1         1         52.17GB   0B (0%)
Local Volumes   1         1         220.2MB   0B (0%)
Build Cache     0         0         0B        0B

開発コンテナ内では、dfこの使用量のほとんどが Docker VFS から来ていることがわかります。

% docker exec 7f666319eddf du -hd 1 /var/lib/docker/       
54G /var/lib/docker/vfs
448K    /var/lib/docker/containerd
8.0K    /var/lib/docker/tmp
20M /var/lib/docker/image
28K /var/lib/docker/volumes
4.0K    /var/lib/docker/swarm
3.1M    /var/lib/docker/containers
116K    /var/lib/docker/buildkit
16K /var/lib/docker/plugins
4.0K    /var/lib/docker/runtimes
88K /var/lib/docker/network
54G /var/lib/docker/

しかし、コンテナ内では、Docker はコンテナが 1GB 未満しか使用していないと考えています。

$ docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          21        19        2.829GB   714.7MB (25%)
Containers      100       8         628.7MB   605.8MB (96%)
Local Volumes   0         0         0B        0B
Build Cache     0         0         0B        0B

しかし、実行後、docker container prune54GB が 28GB に縮小されます。では、なぜこの使用量が に表示されないのでしょうかdocker system df?

macOS Sonoma で Docker Desktop 4.28.0 を実行しています。Ventura でも同じ問題が発生します。

答え1

/var/lib/dockerこれは、ボリュームではなくコンテナ内にある場合によく発生します。コンテナのファイルシステムはオーバーレイであることが多く、オーバーレイ ファイルシステム内にオーバーレイ ファイルシステムを定義することはできません。

階層化ファイルシステム ドライバーが利用できない場合の代替手段としては、各レイヤーのファイルシステム全体のコピーである「ネイティブ」または「vfs」ドライバーを使用します。したがって、100 MB のイメージがあり、docker イメージに 1 MB のファイルを 1 つ追加すると、ドライブに 201 MB のストレージ (元のレイヤー用に 100 MB、新しいレイヤー用に 101 MB) が確保されます。また、すべてのコンテナーはファイルシステムに読み取り/書き込みレイヤーを追加する必要があり、作成されたコンテナーごとにイメージ全体がコピーされます。

修正方法は、ボリュームをマウントし/var/lib/docker、そのマウントのソースがサポートされているバックアップファイルシステム階層化ファイルシステム ドライバーの 1 つによって。

関連情報