dockerのbuildキャッシュが気づいたらすごく増えていたので削除したい
以下と状況が大変よく似ている
https://qiita.com/hyt-sasaki/items/e2cbc4cfb5ae698de498
Dockerfileのbuildをしているとno space leftなるエラーが発生してしまいました。
docker system dfでDockerが使っているストレージ容量を確認したところBuild cacheがやたらに大きいことが判明。
具体的には、ルートボリュームのdisk容量が以下のようにほぼ100%であるが、${HOME}
以下はあまり容量が支配的ではなく不思議な状況であった。
$ df -h
Filesystem Size Used Avail Use% Mounted on
...
/dev/nvme0n1p2 916G 870G 0 100% /
...
$ du -sh
49G .
docker system df
で確認するとキャッシュ等がすごく多くのサイズを占めていた
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 120 2 293.2GB 285.5GB (97%)
Containers 2 0 445.9kB 445.9kB (100%)
Local Volumes 0 0 0B 0B
Build Cache 6139 0 548.2GB 548.2GB
docker builder prune
で削除する
$ docker builder prune
WARNING! This will remove all dangling build cache. Are you sure you want to continue? [y/N] y
ID RECLAIMABLE SIZE LAST ACCESSED
w8pqyrkq9f2a8i5txveyulhdr true 81.74MB 3 weeks ago
...
(3min)
...
sxn69jdkuh7al87bvt0cgndxu true 0B 3 weeks ago
Total: 548.2GB
少し減った、これで回避できるはず
Filesystem Size Used Avail Use% Mounted on
...
/dev/nvme0n1p2 916G 350G 520G 41% /
...
(追記)どうやってもBuild Cacheが残ることがあった、、
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 2 0 7.834GB 7.834GB (100%)
Containers 0 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 5732 0 741.2GB 741.2GB
どうも埒が明かなかったので、systemctl restart docker
でdocker再起動してdocker system prune
実行
$ sudo systemctl restart docker
$ docker system prune
...
Total reclaimed space: 770.2GB
無事に解決した様子
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 2 0 7.834GB 7.834GB (100%)
Containers 0 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 10 0 0B 0B
docker system prune
ではなく以下でも良いかもしれない
docker image prune -f
docker builder prune -f
(参考)今回、1回あたりのdockerビルドでこれくらいBuild Cacheが増えていた
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 13 0 29.21GB 29.21GB (100%)
Containers 0 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 147 35 2.808GB 0B
参考