WSL2 Docker 释放磁盘空间

共计 1084 个字符,预计需要花费 3 分钟才能阅读完成。

WSL2 Docker释放磁盘空间

Docker在使用过程中,会残留很多中间生成的镜像文件,导致磁盘空间被占用。虽然在Docker中清理镜像比较简单,使用命令 docker system prune 就可以删除不再使用的容器、网络和镜像,但在WSL2环境中,情况会稍微复杂一些,因为WSL2本质上是一个虚拟机,每个虚拟机都会有一个扩容的磁盘镜像文件,这个文件不会自动压缩,导致空间无法回收。

原理

WSL2使用虚拟磁盘文件(.vhdx格式),这个文件会随着容器镜像的增加而扩容,但不会自动缩容。即使你删除了不需要的镜像,磁盘文件的大小不会立即缩减,仍然占用磁盘空间。

解决方案

1. 清理Docker镜像

首先,清理Docker中的无用镜像。使用以下命令:

docker system prune

这将删除所有未使用的容器、网络和镜像。你也可以加上 -a 参数来删除所有未被容器引用的镜像。

2. 关闭Docker并停止WSL2实例

清理镜像后,需要停止Docker和WSL2实例。可以使用以下命令:

wsl --shutdown

3. 压缩虚拟磁盘文件

WSL2的磁盘镜像文件支持手动压缩。通过以下步骤,压缩不再使用的空间:

使用Diskpart

  1. 打开命令提示符(以管理员权限运行)。
  2. 输入 diskpart 来启动Diskpart工具。
  3. 执行以下命令来选择并压缩磁盘:
select vdisk file="C:\Users\<你的用户名>\AppData\Local\Docker\wsl\data\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit

注意: <你的用户名> 需要替换为你自己的用户名。

使用PowerShell的Optimize-VHD命令

另一个方法是使用PowerShell的 Optimize-VHD 命令来压缩磁盘文件:

Optimize-VHD -Path "C:\Users\<你的用户名>\AppData\Local\Docker\wsl\data\ext4.vhdx" -Mode Full

这个命令同样可以帮助你缩小磁盘文件的大小。

4. 清理Build Cache

如果你的Docker构建过程中产生了缓存文件,也会占用大量磁盘空间。你可以通过以下命令清理Docker的构建缓存:

docker builder prune

这将删除所有未使用的构建缓存,释放磁盘空间。

结论

通过以上步骤,可以有效地释放WSL2环境中Docker占用的磁盘空间。清理Docker镜像、压缩虚拟磁盘文件以及清理构建缓存,都是常见的解决方法。对于磁盘空间不足的情况,及时进行清理和压缩是很有帮助的。

正文完
 0
评论(没有评论)