Dockerのディスク使用量が減らない?原因と対処法まとめ
どうも皆さんこんにちは、ホークスファンの市川です。
Dockerで開発を行っていると、いつの間にか容量が圧迫されていることが多々あります。
「何がそんなに容量を食ってるの?」と思ったときに、まず確認してみたいのが Docker 内の使用状況です。
下記のコマンドで、Docker 内の容量を確認できます。
docker system df
imagesの容量が高くなっており、数も多くなっています…
上記原因の1つとして考えられるのが、ビルド時に生成される<none>というイメージです。
danglingイメージと呼ばれ、「宙ぶらりんなイメージ」、つまり他のタグ(名前)から参照されておらず、どのコンテナからも使われていないイメージのことを指します。
これらのdanglingイメージは、次のコマンドで確認できます。
出力されたイメージのREPOSITORY
やTAG
の欄が<none>
となっているのが特徴です。
なぜ<none>
イメージが作られるのか?
Dockerでは、同じ名前とタグを持つイメージは1つしか存在できません。
そのため、同じイメージ名で再ビルドを行うと、新しいイメージが作成され、既存のタグは新しいイメージに上書きされます。
このとき、元のイメージはタグを失い、<none>
という状態で残ってしまいます。
danglingイメージの削除方法
不要なdanglingイメージを削除するには、以下のコマンドで削除できます。

キャッシュの削除
imagesを削除してもキャッシュに残るので、下記コマンドでキャッシュを削除します。
docker builder prune
まだこれだけではローカルディスクの容量は変わりません
無事削除できたので、容量が開いたかなとローカルディスクの容量を確認したところ、何も変わっていませんでした…
Dockerの仮想ディスクは自動で拡張されるけど、拡張後に容量が空いてもそのままとのこと。
今度は仮想ディスクを圧縮していきます。
仮想ディスクの場所
Dockerの仮想は下記の場所にあります。
C:\Users\<ユーザ名>\AppData\Local\Docker\wsl\data\ext4.vhdx
仮想ディスクの圧縮手順
1.PowerShellを管理者で開く
2.WSLをシャットダンする
wsl --shutdown
3.下記コマンドを実行
diskpart
diskpart の対話モードに入るので、下記コマンドを実行: