docker磁盘清理首选docker system prune,可安全清除停止容器、悬空镜像、未用网络及构建缓存;需删全部未引用镜像加-a,清卷加--volumes;另需单独处理buildx缓存、qemu虚拟磁盘、用户缓存目录及数据目录迁移。

如果您在Mac上长期使用Docker进行开发,发现磁盘空间持续减少、系统变慢或“其他”类存储占比异常升高,则很可能是Docker残留的镜像、容器、卷、构建缓存及QEMU虚拟磁盘文件未被及时清理所致。以下是五种经过验证的清理方法:
一、执行系统级资源清理
该方法通过Docker内置命令统一清除停止容器、悬空镜像、未用网络与构建缓存,操作安全且覆盖全面,是日常维护的首选方式。
1、打开终端,输入以下命令并回车:
docker system prune
2、系统将提示确认,输入 y 并回车继续。
3、如需同时删除所有未被任何容器引用的镜像(含带标签镜像),追加 -a 参数:
docker system prune -a
4、若还需清理未使用的本地卷(请确保卷中无重要数据),额外添加 --volumes 参数:
docker system prune -a --volumes
二、单独清理构建缓存(含Buildx)
当使用docker buildx构建多平台镜像时,其缓存独立于传统build系统,体积庞大且不被system prune默认覆盖,需单独处理。
1、清理经典构建器缓存:
docker builder prune
2、强制清理所有构建缓存(跳过确认):
docker builder prune -f
3、查看当前缓存占用详情:
docker builder df
三、手动释放Docker Desktop虚拟机磁盘
Docker Desktop for Mac基于HyperKit虚拟机运行,其底层qcow2磁盘镜像不会自动收缩,即使容器内已删除大量文件,主机端磁盘空间也不会自动释放。
1、进入Docker Desktop设置,点击右上角齿轮图标 → Resources → Disk image size,记录当前值。
2、关闭Docker Desktop。
3、在终端中执行以下命令定位磁盘镜像路径:
ls ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw
4、运行零填充清理(需先启动虚拟机并进入容器执行):
dd if=/dev/zero of=/tmp/zeros bs=1M; rm /tmp/zeros
5、关闭虚拟机后,在主机执行压缩转换(假设原始镜像为Docker.raw):
qemu-img convert -O qcow2 ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw ~/Desktop/Docker_compressed.qcow2
6、替换原文件(务必提前备份):
mv ~/Desktop/Docker_compressed.qcow2 ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw
四、清理用户级Docker相关缓存目录
Docker Desktop自身会在用户目录下生成日志、缓存和临时文件,这些内容不通过Docker命令管理,但可安全手动删除。
1、关闭Docker Desktop。
2、在终端中依次执行以下清理命令:
rm -rf ~/Library/Caches/com.docker.docker
rm -rf ~/Library/Logs/com.docker.docker
rm -rf ~/Library/Saved Application State/com.docker.docker.savedState
3、清理Docker Desktop更新缓存:
rm -rf ~/Library/Caches/com.docker.docker/updates
五、迁移或重置Docker Desktop数据目录
当根分区空间极度紧张,且无法通过压缩或清理恢复足够空间时,可将Docker数据目录迁移至外接硬盘或大容量分区,或执行彻底重置。
1、完全退出Docker Desktop。
2、备份当前数据目录(可选):
cp -a ~/Library/Containers/com.docker.docker ~/Desktop/docker_backup
3、删除现有数据目录:
rm -rf ~/Library/Containers/com.docker.docker
4、重启Docker Desktop,它将重建精简版数据目录。
5、如需迁移至外接卷(例如挂载在 /Volumes/ExtDisk),需配合符号链接:
mkdir -p /Volumes/ExtDisk/docker-data
ln -s /Volumes/ExtDisk/docker-data ~/Library/Containers/com.docker.docker











