【已解决】Windows 的 docker 删除容器后 WSL2 磁盘空间不释放的问题

这篇具有很好参考价值的文章主要介绍了【已解决】Windows 的 docker 删除容器后 WSL2 磁盘空间不释放的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、起因及原因

很多同学拉取镜像使用一段时间后发现 C 盘快满了,把之前用过的镜像和容器删除,发现 WSL 挂载目录的虚拟磁盘大小没有变化,非常的奇怪。

其实,不同于 WSL1,WSL2 本质上是虚拟机,所以 Windows 会自动创建 vhdx 后缀的虚拟磁盘文件作为存储。这个 vhdx 后缀的虚拟磁盘文件特点是可以自动扩容,但是一般不会自动缩容。一旦有很多文件把它“撑大”,即使把这些文件删除它也不会自动“缩小”。所以删除文件后还需要我们手动进行压缩才能释放磁盘空间。

2、解决

2.1 找到要压缩的虚拟磁盘文件

如果你没更改挂载磁盘的位置,那他位置在 C:\Users\<你当前用户名>\AppData\Local\Docker\wsl\data\ext4.vhdx ,记下路径,后面要用到。

2.2 关闭 Docker Desktop

在任务栏右下角右键单击 Docker Desktop 图标关闭 Docker 桌面,选择退出 Docker 桌面,等一会 Docker 图标没了之后,就证明 Docker 完全关闭了,然后,打开命令提示符:

wsl --list -v

我们就能能够看到,确保两个状态都已停止。

docker删除镜像磁盘未释放,安装教程,笔记,Linux,docker,运维,linux

如果这一步没关闭也没问题,最后所有操作结束后,重启 Docker Desktop 即可。

2.3 压缩虚拟磁盘文件

在 PowerShell 中执行:

# 关闭 WSL2 中的 linux distributions
wsl --shutdown
# 运行管理计算机的驱动器的 DiskPart 命令
diskpart

会新打开一个叫 DiskPart 的命令窗口,如下图:

docker删除镜像磁盘未释放,安装教程,笔记,Linux,docker,运维,linux
在新打开的 DiskPart 命令窗口中执行:

# 选择虚拟磁盘文件
select vdisk file="就是步骤2.1虚拟磁盘文件的路径"
# 压缩文件
compact vdisk
# 压缩完毕后卸载磁盘
detach vdisk

上述操作执行完毕,WSL2 删除文件后空出来的磁盘空间就被释放了,可以去虚拟磁盘文件的路径看到 ext4.vhdx 文件大小已经减小。最后打开 Docker Desktop 可以看到原来镜像还在,成功解决问题。

3、偏招

有些同学尝试把 ext4.vhdx 删除直接从根源解决问题,其实这也是可以的文章来源地址https://www.toymoban.com/news/detail-596422.html

  • 开机后马上切换到 ext4.vhdx 目录下,把 ext4.vhdx 删除,因为如果你启动 docker 后再想去删除,他会告诉你 ext4.vhdx 操作无法完成,因为文件已在System中打开。
  • 上个步骤之后,我们会发现打开 Docker Desktop 一直在 starting ,打不开,卸载 Docker Desktop ,再重新安装 Docker Desktop 打开即可解决。

到了这里,关于【已解决】Windows 的 docker 删除容器后 WSL2 磁盘空间不释放的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • windows10 安装WSL2, Ubuntu,docker

    windows10 安装WSL2, Ubuntu,docker

    阅读时长:10分钟 本文内容: window上安装ubuntu虚拟机,并在虚拟机中安装docker,通过docker部署数字人模型,通过vscode链接到虚拟机进行开发调试.调试完成后,直接部署在云端即可. WSL2(Windows Subsystem for Linux)是windows系统默认支持的功能,也就是Windows Linux子系统,类似于一台

    2024年02月12日
    浏览(12)
  • windows下的wsl2如何进行docker数据卷挂载

    windows下的wsl2如何进行docker数据卷挂载

     这是数据卷挂载命令 docker run -it -v /宿主机绝对路径目录: /容器内目录 镜像名  在Linux中我们可以直接使用该命令进行挂载,那在windows如何把我们c盘d盘下的目录挂载到容器呢,其实只要在路径前面加上/mnt就好了,下面来演示一下 首先拉取一个ubuntu镜像 docker pull ubuntu 这是

    2023年04月11日
    浏览(7)
  • WSL2模式下,将Ubuntu、Docker迁移出C盘并解除Ubuntu、Docker对C盘的空间占用

    windows用户以前如果需要使用linux,一般是远程linux服务器或者使用虚拟机,更有甚者是把系统换成linux。相较于以上方式,对于体验用户或者本机需要使用容器创建服务的用户来说,这是很不方便的。但是近年来,微软也开发了wsl,在windows里集成了linux服务,启用wsl后,从微软

    2024年02月09日
    浏览(7)
  • 解决WSL2占用内存过多问题(Docker on WSL2: VmmemWSL)

    解决WSL2占用内存过多问题(Docker on WSL2: VmmemWSL)

    安装完WSL2后,又安装了Docker,使用了一段时间,发现电脑变卡,进一步查看,发现CPU和内存占用过大,如下图: docker仅仅运行了mysql和zk,在关掉docker后,占用内存仍然很大: 然后关掉wsl后,发现内存下降了。 但是,这种解决方案并不满足我的诉求,我想要的结果是:dock

    2024年02月08日
    浏览(9)
  • docker for Windows, WSL2 ,Hyper-v的关系

    Hyper-V是由微软开发的一种虚拟化技术和虚拟机管理器。它允许在Windows操作系统上创建和运行多个虚拟机实例,每个虚拟机可以运行独立的操作系统和应用程序。 属于硬件虚拟化。 WSL2在技术上与WSL有很大的不同。在WSL2中,Windows 10引入了虚拟化技术,利用了Hyper-V虚拟机来运

    2024年02月08日
    浏览(17)
  • 基于 WSL2、 Docker Desktop搭建Windows和Linux系统 Docker 环境

    基于 WSL2、 Docker Desktop搭建Windows和Linux系统 Docker 环境

    目录 介绍 环境 安装教程 开启 WSL2 服务 安装 CentOS 系统 安装 docker Desktop 其他  安装镜像 WSL 命令使用 Docker-Desktop 储存路径更改 WSL2 :可以理解为是 Windows 上的一个工具,通过 WSL2 可以在 Windows 上运行 Linux 子系统。  Docker Desktop :可以理解为是 Docker 的桌面版,或者是 W

    2024年01月20日
    浏览(20)
  • Windows WSL2 安装Nvidia-Docker GPU 驱动Paddlepaddle

    Windows WSL2 安装Nvidia-Docker GPU 驱动Paddlepaddle

    😊查看自己电脑显卡型号nvidia上去下载 参考内容: 舊版WSL 的手動安裝步驟 下載: Linux 內核更新包 选择子系统, 推介: Ubuntu 20.04 LTS 下载后双击点击安装 根据nvidia-smi, 选择 CUDA版本 这里选择11.7.0 进入选择Linux - x86_64 - WSL-Ubuntu - 2.0 - runfile(local) https://hub.docker.com/r/nvidia/cuda 上去找

    2024年02月02日
    浏览(8)
  • 最新版Docker Desktop安装在windows10上会出现的WSL2错误

    最新版Docker Desktop安装在windows10上会出现的WSL2错误

    有科技的可以去这个帖子看,解决WSL是最新版也无法运行docker的情况 查了很多帖子都是牛头不对马嘴,不说废话直接上解决方案 Docker.Core.HttpBadResponseException: {“message”:“2 errors occurred:nt* provisioning docker WSL distros: running wsl-bootstrap version set in main distro: exit status 1nt* checking

    2024年02月02日
    浏览(13)
  • 当docker(WSL2)出现以下问题时,我的解决方式

    当docker(WSL2)出现以下问题时,我的解决方式

    Error invoking remote method \\\'docker-start-container\\\': Error: (HTTP code 400) unexpected - failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting \\\"/run/desktop/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu/df1d4126e22d38211

    2024年01月19日
    浏览(6)
  • 解决PHP项目在Docker(WSL2)中运行缓慢的问题

    解决PHP项目在Docker(WSL2)中运行缓慢的问题

    Windows 11 Docker Desktop 4.17.1(开启WSL2) WSL2(Ubuntu-22.04) 最近在使用Docker容器运行PHP项目的时候,发现特别缓慢。例如一个干净的 ThinkPHP 5.1 框架,访问首页都需要1秒以上,如果再加上数据库查询、复杂的业务逻辑等代码的话,那速度可想而知。 我的开发模式是,在Windows上使

    2024年02月05日
    浏览(7)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包