Windows Docker Desktop 在长时间使用后,会由于镜像、容器、缓存等文件累积,导致磁盘空间占用过大。这主要是因为:
- 镜像累积: 随着不断地拉取、构建镜像,镜像文件会占据大量空间。
- 容器数据: 容器运行时产生的数据,如日志、配置文件等,也会占用空间。
- 构建缓存: Docker 在构建镜像时会生成缓存,以加速后续构建。但过多的缓存也会占用空间。
删除镜像和容器这里就不说了,可以打开软件然后删除
但是很多时候你删除了容器和镜像,似乎占用没怎么变,下面就介绍一下软件之外的清理办法.
1. 镜像文件比实际占用大很多
编辑
实际上只有一些镜像,docker system df显示占用不到20G
2. 磁盘压缩
关闭wsl(切记,如果开启了docker应用,或者卡住,必须重启电脑并不要打开docker)
wsl --shutdown
打开磁盘应用,会弹出新的应用窗口
diskpart
选择磁盘,参考 如何管理 WSL 磁盘空间 | Microsoft Learn 找到磁盘镜像所在文件路径
select vdisk file=....vhdx
编辑
压缩磁盘
compact vdisk
等待完成
编辑
编辑
卸载虚拟磁盘
detach vdisk
编辑
最后再启动wsl服务即可,可能还需重启,可以看到占用少了13G,也是不少的空间呢
3. 清理构建缓存
查看系统占用:这部分如果发现占用比实际的少很多,记得用方法1来释放(例如我用这个df查看的占用25G,实际上ext4.vhdx 却有55G,实际占用多了30G)
docker system df #查看各系统的占用
执行构建清理
docker buildx prune -f
如此操作,便能够节省不少空间了,虽然比实际占有多一点点,但不至于多太多。尤其是使用时间过久之后,会有很多构建缓存。
顺便提一下docker的镜像或容器文件的结构:由一层一层叠起来,像是千层饼,为了尽可能的减少重复,往往很多层都会在应用中根据hash缓存,哪怕你删了一个镜像-那个饼的层集合,但那些层并不会删除。