mac上docker磁盘占用过高源于停止容器、悬挂镜像、未用卷及buildx缓存等残留;需依次执行container prune、rm -f $(docker ps -aq)、image prune、volume prune、network prune及builder prune清理。

如果您在Mac上使用Docker进行开发,发现磁盘空间被大量占用,且“其他”类存储持续增长,则很可能是由停止但未删除的容器、悬挂镜像、未使用卷及构建缓存等无用记录导致。以下是清理Docker无用容器及相关残留数据的具体操作步骤:
一、清理已停止的容器
已停止的容器虽不运行,但仍保留在文件系统中,占用磁盘空间并影响docker system df统计准确性。该操作仅删除状态为Exited的容器,不影响正在运行的服务。
1、打开终端,执行命令查看所有容器(含已停止):
docker ps -a
2、确认列表中无须保留的已停止容器后,运行以下命令批量删除:
docker container prune -f
3、如需预览将被删除的容器而不实际执行,可先运行:
docker container prune -n
二、删除孤立容器及其关联资源
某些容器可能已被删除,但其挂载点、网络端点或临时卷仍残留。该方法通过强制清理容器元数据与依赖项,确保无残留引用。
1、停止所有正在运行的容器:
docker stop $(docker ps -q)
2、删除所有容器(包括已停止和已退出的):
docker rm -f $(docker ps -aq)
3、验证是否仍有容器残留:
docker ps -a | head -n 10
三、清除悬挂镜像与未使用镜像
容器停止后,若其基础镜像未被其他容器引用,即成为“悬挂镜像”(dangling),它们无法被常规命令识别,却持续占用/var/lib/docker目录空间。
1、列出所有悬挂镜像:
docker images -f dangling=true
2、删除全部悬挂镜像:
docker image prune -f
3、如需同时清理所有未被任何容器引用的镜像(含带标签镜像),执行:
docker image prune -a -f
四、清理未使用的卷和网络
容器退出后,其绑定的数据卷和自定义网络可能未被自动释放,尤其在使用docker run -v或docker network create时易产生冗余条目。
1、列出所有卷并检查挂载路径与使用状态:
docker volume ls -q | xargs -I {} sh -c 'echo "=== {} ==="; docker volume inspect {} 2>/dev/null | grep -E "(Mountpoint|CreatedAt)"'
2、删除所有未被任何容器引用的卷:
docker volume prune -f
3、删除所有未被容器使用的自定义网络:
docker network prune -f
五、清空Buildx构建缓存
macOS上Docker Desktop默认启用Buildx,其缓存独立于传统docker builder,常驻于~/.docker/buildx目录,体积可达数GB且不响应system prune命令。
1、查看Buildx缓存占用情况:
docker builder du -v
2、删除所有构建缓存(含本地与远程构建器实例):
docker builder prune -a -f
3、若需保留当前活跃构建器但仅清理缓存,使用:
docker builder prune -f











