Windows Docker Desktop磁盘空间清理步骤完全指南

 更新时间:2026年04月08日 09:42:47   作者:REDcker  
Windows Docker Desktop在长时间使用后,会由于镜像、容器、缓存等文件累积,导致磁盘空间占用过大,这篇文章主要介绍了Windows Docker Desktop磁盘空间清理的相关资料,需要的朋友可以参考下

问题描述

在 Windows 上运行 Docker Desktop 时,可能会发现 docker_data.vhdx 文件占用了大量磁盘空间(例如接近 400GB)。这个文件是 Docker Desktop 使用 WSL 2 后端时,用于存储所有 Docker 数据(镜像、容器、卷、构建缓存等)的虚拟硬盘文件。

问题根源:WSL 2 虚拟硬盘

当您在 Windows 上启用 WSL 2 功能并使用 Docker Desktop 时,它会创建一个或多个 Linux 发行版(如 docker-desktop, docker-desktop-data)在后台运行。您的容器及其所有相关数据(包括层叠的文件系统、写入的数据等)最终都存储在这个名为 docker_data.vhdx 的虚拟硬盘中。

重要特性:这个文件会动态增长以适应您的数据,但默认情况下,即使您删除了 Docker 内部的文件,它也不会自动缩小。这就是它变得如此巨大的原因。

解决方案(从推荐到高级)

请严格按照顺序尝试以下方法,并在操作前确保重要数据已备份。

方案一:使用 Docker Desktop 自带清理(最简单、最安全)

这是首选方法,因为它完全通过 Docker 的管理界面进行,最不容易出错。

  1. 打开 Docker Desktop
  2. 点击右上角的 设置(Settings) 齿轮图标。
  3. 选择左侧的 Resources -> Advanced
    • 这里您可以调整磁盘映像的最大大小,但我们现在不调整,只是查看。记下当前设置。
  4. 选择左侧的 Troubleshoot(或在某些版本中是 Diagnose & Feedback)。
  5. 您会看到几个按钮,点击 Clean / Purge data
    • 警告:这会删除所有 Docker 数据,包括所有镜像、容器、卷和网络。您的容器和数据也会被销毁!请确保您已从容器中 docker cp 出所有重要文件,或者这些文件已通过卷挂载到了 Windows 主机上。

更温和的清理(推荐先试这个):

直接在 Docker Desktop 的 Dashboard 页面,您可以看到所有正在运行和已停止的容器、本地镜像、卷和构建缓存。您可以手动选择不需要的镜像、容器(已退出的)和卷,然后逐个删除。

方案二:使用 Docker 命令进行精细清理(推荐用于日常维护)

这个方法可以更有选择性地清理,避免丢失所有数据。

  1. 打开 PowerShell 或 CMD(以管理员身份运行并非必须,但有时有权限更好)。

  2. 列出并删除所有已停止的容器

    docker container prune

    系统会询问是否继续,输入 y

  3. 删除所有未被使用的镜像(悬空镜像):

    docker image prune
  4. 删除所有未被使用的镜像(包括那些没有标签的,更彻底):

    docker image prune -a

    注意:这可能会删除您之后可能想重用的基础镜像。

  5. 删除所有未被使用的卷极其重要:卷通常用于存储数据库数据等持久化信息,请确认卷中的数据已无用或已备份):

    docker volume prune
  6. 一键清理所有未使用的对象(容器、网络、镜像(悬空)、构建缓存):

    docker system prune
  7. 最彻底的清理(包括所有未被使用的镜像,不仅仅是悬空镜像):

    docker system prune -a --volumes

    再次强调--volumes 参数会删除所有未被容器引用的卷,使用前请三思!

完成以上命令后,Docker 内部的数据已经减少了,但 docker_data.vhdx 文件的大小很可能还没有变化。

方案三:压缩 VHDX 文件(核心步骤!)

这是让虚拟硬盘文件实际变小的关键。我们需要在 WSL 层面进行操作。

  1. 关闭 Docker Desktop:右键系统托盘区的 Docker 图标,选择 Quit Docker Desktop。确保它完全退出。

  2. 列出并关闭所有 WSL 发行版
    打开 PowerShell 或 CMD,执行:

    wsl --list --verbose
    # 或简写
    wsl -l -v

    您会看到类似这样的输出:

    NAME                   STATE           VERSION
    * Ubuntu                 Running         2
      docker-desktop         Stopped         2
      docker-desktop-data    Stopped         2
  3. 强制终止所有 WSL 实例
    为了确保万无一失,运行:

    wsl --terminate Ubuntu
    wsl --terminate docker-desktop
    wsl --terminate docker-desktop-data

    再次运行 wsl -l -v,确保所有状态都变为 Stopped

  4. 优化(压缩)VHDX 文件
    现在针对存储数据的那个发行版(docker-desktop-data)进行操作:

    # 请将路径替换为您的实际路径,通常就在这里
    # 注意:这是一个很长的单行命令
    optimize-vhd -Path "C:\Users\<YourUserName>\AppData\Local\Docker\wsl\data\ext4.vhdx" -Mode full

    如何找到路径?

    • 默认路径通常是 C:\Users\<你的用户名>\AppData\Local\Docker\wsl\data\ext4.vhdx
    • 如果找不到,可以在文件资源管理器的地址栏输入 %LOCALAPPDATA%\Docker\wsl\data 直接进入。
    • 您也可以直接在 PowerShell 中运行(如果优化了错误的文件也没关系,只是没效果):
      optimize-vhd -Path "$env:LOCALAPPDATA\Docker\wsl\data\ext4.vhdx" -Mode full
    • -Mode full 是最彻底的压缩模式,耗时也最长。
  5. 等待完成并重启 Docker
    命令执行成功后,您会发现 ext4.vhdx 文件的大小显著减小了。现在重新启动 Docker Desktop,它应该会正常启动。

关于 WSL 发行版的说明

WSL 发行版类型

当您运行 wsl -l -v 时,可能会看到类似以下输出:

NAME                   STATE           VERSION
* Ubuntu                 Stopped         2
  Ubuntu2                Stopped         2
  docker-desktop         Stopped         2
  docker-desktop-data   Stopped         2

1.Ubuntu和Ubuntu2

  • 它们是什么?
    这些是您自己手动安装的独立的 Linux 发行版子系统。您可能在 Microsoft Store 里搜索并安装了 “Ubuntu” 或某个特定版本(如 Ubuntu 20.04 LTS),或者通过 wsl --install -d Ubuntu 命令安装的。它们与 Docker Desktop 是完全独立的两个程序。

  • 删除它们对 Docker Desktop 有影响吗?
    完全没有影响。 Docker Desktop 的运行不依赖于您手动安装的这些 WSL 发行版。它们只是在您的电脑上共存的另一个 Linux 环境。

  • 我能删除它们吗?
    可以,而且如果您不再需要在这些独立环境中工作,强烈建议删除它们以节省磁盘空间。
    删除方法:

    # 注销(删除)指定的发行版
    wsl --unregister Ubuntu
    wsl --unregister Ubuntu2

    警告:执行此命令会永久删除该发行版内的所有文件和数据,且无法恢复。请确保您没有重要的文件在里面。

2.docker-desktop和docker-desktop-data

  • 它们是什么?(这是重点!)
    这两个是 Docker Desktop for Windows 为了使用 WSL 2 后端而自动创建和管理的特殊发行版。

    • docker-desktop:包含 Docker 引擎(守护进程 dockerd)和与 WSL 集成相关的组件。它负责运行 Docker 服务本身。
    • docker-desktop-data这就是您之前看到的 400GB docker_data.vhdx 文件的宿主! 它专门用于存储所有的 Docker 镜像、容器层、卷(Volumes)和网络配置等持久化数据。您的容器及其所有读写操作,最终都保存在这个发行版的空间里。
  • 删除它们对 Docker Desktop 有影响吗?
    有毁灭性的影响!

    • 删除 docker-desktop:Docker Desktop 将无法启动,因为运行它的核心服务没了。
    • 删除 docker-desktop-data您的所有 Docker 数据(所有镜像、所有容器、所有卷里的数据)将会被永久删除! 这比在 Docker 内部执行 docker system prune -a --volumes 要彻底得多,是直接格式化整个数据仓库。您的 400GB 文件会消失,但代价是里面的所有内容都没了。
  • 我能删除它们吗?
    绝对不要手动删除它们! 您只能通过 Docker Desktop 的设置或我们之前讨论的 Purge Data 功能来重置它们,这本质上也是在受控环境下删除和重建它们。

WSL 发行版删除影响总结

WSL 发行版名称来源作用是否可以删除?删除后果
Ubuntu, Ubuntu2用户手动安装独立的 Linux 工作环境可以仅丢失该独立Linux系统内的个人文件
docker-desktopDocker Desktop 自动创建运行 Docker 引擎的核心服务绝对不可以Docker Desktop 无法启动
docker-desktop-dataDocker Desktop 自动创建存储所有 Docker 数据的虚拟硬盘绝对不可以所有 Docker 镜像、容器、卷数据永久丢失

清理步骤建议总结

  1. 第一步:常规清理

    • 使用 Docker Desktop 的 Dashboard 手动删除不需要的容器、镜像和卷
    • 或使用命令行:docker system prune(温和)或 docker system prune -a(彻底)
  2. 第二步:关闭 Docker 和 WSL

    • 完全退出 Docker Desktop
    • 使用 wsl --terminate 确保所有 WSL 实例都已停止
  3. 第三步:压缩 VHDX 文件

    • 使用 optimize-vhd 命令压缩 docker-desktop-data 的虚拟硬盘文件
    • 这是让文件实际变小的关键步骤
  4. 第四步:重启 Docker Desktop

    • 验证 Docker 是否正常工作
    • 检查磁盘空间是否已释放

未来预防措施

  1. 定期清理:养成定期使用 docker system prune -a(或更温和的命令)的习惯。

  2. 使用 .dockerignore:在构建镜像时,使用此文件排除不必要的文件和目录(如 node_modules, .git),可以减小镜像体积。

  3. 多阶段构建:在 Dockerfile 中使用多阶段构建,只将最终需要的文件复制到最终镜像中。

  4. 合理使用卷:将动态数据(如数据库文件)放在卷中,便于管理和备份,也避免在容器内产生大量垃圾文件。

  5. 考虑数据备份策略:对于重要的容器数据,定期将其从容器中拷出或备份卷。

重要提醒

  • 在执行任何 sudo rm -rfwsl --unregister 命令前,请务必再三确认路径是否正确,删除系统文件可能导致系统无法启动。
  • 对于不确定的文件,可以先移动到备份位置(如 /tmp),观察一段时间没问题后再彻底删除。
  • 在执行 docker system prune -a --volumes 前,请确保重要数据已备份。
  • 绝对不要手动删除 docker-desktop 和 docker-desktop-data 这两个 WSL 发行版!

常用清理命令

根据docker system df的结果,选择合适的命令进行清理。

命令作用备注
docker container prune删除所有已停止的容器。相对安全。
docker image prune删除所有"悬空镜像"(即没有标签,且没有被任何容器引用的镜像层)。相对安全。
docker image prune -a删除所有未被容器引用的镜像。较为激进,可能需重新拉取基础镜像,请谨慎使用。
docker volume prune删除所有未被容器引用的卷。卷中的数据是持久化的,被删除后可能丢失重要数据,操作前务必确认卷已无用或已备份
docker builder prune清理构建缓存。对于有频繁镜像构建需求的环境,可考虑保留部分缓存。
docker system prune -a --volumes执行最彻底的清理,会删除所有未使用的容器、网络、镜像和卷。这是核武器级别的命令,请再三确认所有重要数据都已妥善处理后再使用

总结 

到此这篇关于Windows Docker Desktop磁盘空间清理的文章就介绍到这了,更多相关Windows Docker Desktop磁盘空间清理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker中的link和network网络互连问题

    docker中的link和network网络互连问题

    这篇文章主要介绍了docker中的link和network网络互连问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • IntelliJ IDEA(2018版)安装docker插件的详细过程

    IntelliJ IDEA(2018版)安装docker插件的详细过程

    这篇文章主要介绍了IntelliJ IDEA安装docker插件的详细过程,开发工具使用的是IDEA2018.16版,本文通过图文实例相结合给大家介绍的非常详细,需要的朋友可以参考下
    2021-09-09
  • 在docker容器中elasticsearch的导入导出方式

    在docker容器中elasticsearch的导入导出方式

    文章详细介绍了如何使用Docker拉取Elasticsearch镜像,并导出和导入索引数据,还讨论了在Elasticsearch Head中解决请求头显示不正确的问题,包括从容器中复制文件、编辑文件和将文件回传到容器
    2025-11-11
  • docker部署springboot项目文件上传路径过程

    docker部署springboot项目文件上传路径过程

    文章介绍了如何使用Docker部署Spring Boot项目,并设置文件上传路径,通过两种方式启动容器,一种是不挂载文件,另一种是挂载文件,挂载文件的方式可以方便地在本地服务器上查看上传的文件
    2026-01-01
  • linux 详解useradd 命令基本用法

    linux 详解useradd 命令基本用法

    这篇文章主要介绍了linux 详解useradd 命令基本用法的相关资料,需要的朋友可以参考下
    2017-01-01
  • docker安装nacos2.2.4图文详解(含:nacos容器启动参数、环境变量、常见问题整理)

    docker安装nacos2.2.4图文详解(含:nacos容器启动参数、环境变量、常见问题整理)

    文章详细介绍了如何在Docker中下载、安装和配置Nacos 2.2.4,包括在线和离线安装步骤、使用不同网络模式(如Host模式)以及一些常见问题的解决方法,感兴趣的朋友跟随小编一起看看吧
    2025-02-02
  • 在docker中搭建部署clickhouse过程

    在docker中搭建部署clickhouse过程

    文章介绍了在Docker中部署ClickHouse并进行网关日志存储的步骤,包括创建ClickHouse容器、修改用户配置、使用DBeaver连接以及在Spring Boot中集成ClickHouse进行读写操作
    2024-11-11
  • Docker镜像构建_Docker Compose编排实践_Docker Harbor仓库的集成

    Docker镜像构建_Docker Compose编排实践_Docker Harbor仓库的集成

    Docker作为容器化的核心平台,通过镜像封装应用及其依赖,确保跨环境的一致性,Docker Compose 则进一步简化多容器应用的编排,通过声明式配置实现服务的快速部署与协同,而 Docker Harbor 作为企业级镜像仓库,提供了安全、高效的镜像存储与管理能力,支持团队协作和持续集成
    2026-01-01
  • Docker容器项目无法访问MySQL的问题排查与解决策略

    Docker容器项目无法访问MySQL的问题排查与解决策略

    本文分析了Docker容器连接MySQL时常见的问题,并提供了解决方案,主要问题包括网络隔离、服务启动顺序、权限配置等,解决方案包括使用自定义网络、连接宿主机MySQL、健康检查与启动等待、端口映射与防火墙配置、MySQL权限配置和Host网络模式等,需要的朋友可以参考下
    2026-04-04
  • docker上安装使用mysql镜像

    docker上安装使用mysql镜像

    本文主要给大家介绍了如何在docker中安装并运行MySQL镜像,属于个人尝试,这里总结下分享给大家,有需要的小伙伴可以参考下
    2017-02-02

最新评论