Docker 镜像删除后占用空间

ano*_*s1a 7 docker windows-subsystem-for-linux wsl-2

我提交了一个现有的 Docker 容器来创建一个新的镜像,但是提交的镜像太大了(原始镜像是 3+GB,并且在容器中只安装了一些额外的东西,提交的镜像是 8+GB)。

我空间不足,所以我决定删除提交的图像,但即使删除提交的图像,我的磁盘空间也没有增加。然而,当我运行时,docker system df它只显示应该使用原始图像和容器的空间(我只有一个图像和一个容器)。

有什么方法可以让我释放空间,我确信我删除的图像仍然以某种方式占用?(作为参考,我在一个小时内创建了图像,然后将其删除,并且一直在监视我的可用空间,所以我很确定是这个而不是其他占用空间的东西。)

此外,我正在使用 Docker Desktop for Windows 与 WSL2 集成,因此通过/var/lib/docker检查磁盘使用情况来检查 Docker 的磁盘使用情况并不容易。

小智 43

如果尝试执行 Optimize-VHD 时出现错误:

Optimize-VHD : The term 'optimize-vhd' is not recognized as the name of a cmdlet
Run Code Online (Sandbox Code Playgroud)

您可以使用diskpart

wsl --shutdown
diskpart
select vdisk file="C:\Users\{YourUser}\AppData\Local\Docker\wsl\data\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit
Run Code Online (Sandbox Code Playgroud)

  • 只需确保 @drupalfan 您正在以管理员身份运行用于这些命令的终端。 (3认同)

eti*_*tix 20

此代码可用作提升的PowerShell 会话的快速修复。我必须使用pwsh,因为它可以在没有临时文件的情况下与diskpart正常工作。

docker system prune -a --volumes
net stop com.docker.service
taskkill /IM "docker.exe" /F
taskkill /IM "Docker Desktop.exe" /F
wsl --shutdown
((@"
select vdisk file="%LOCALAPPDATA%\Docker\wsl\data\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit
"@
)|diskpart)
net start com.docker.service
. "C:\Program Files\Docker\Docker\Docker Desktop.exe"
Run Code Online (Sandbox Code Playgroud)


Sch*_*ltz 15

我使用这些命令将桌面图像从 35GB 缩小到 1GB

(在 Windows 10 中,docker 版本 19.03.13)

删除未使用的图像和其他资源

docker system prune -a

移除更多资源

docker volume rm $(docker volume ls -q -f dangling=true)

停止docker桌面,优化镜像

确保 HyperV 已打开

%windir%\System32\mmc.exe "%windir%\System32\virtmgmt.msc" 或在 win 搜索中输入 Hyper-V

在GUI中优化磁盘>转到VM,并检查磁盘

Optimize-VHD -Path "C:\ProgramData\DockerDesktop\vm-data\DockerDesktop.vhdx" -Mode Full

启动 docker 桌面

现在我有 34+GB 的可用磁盘空间

使用 docker 桌面应用程序进行清理

单击标题中的错误图标,然后单击清除/清除数据时,您可以清除数据。

在此处输入图片说明

  • 拯救了我的一天。已恢复 140 GB 和我的工作日 (2认同)

小智 6

我使用以下步骤来清理泊坞窗空间。

  1. 在 Windows 命令提示符下执行“docker system prune -f”(它说释放 45GB。但是,我能够看到 6GB)。

  2. 打开 Docker 桌面应用程序。

  3. 导航到“故障排除”菜单并单击“清理/清除数据”按钮。

请注意,这将清除 Docker 中的所有数据。


Dam*_*amo 5

由于您使用的是 Windows 并在桌面版 docker 中运行,因此您实际上是在 VM 中运行 docker。然后这取决于磁盘映像大小的设置,通常虚拟磁盘会扩展以填充该空间。

您可以缩小磁盘映像:

  • 停止 docker 桌面

  • 打开一个管理 powershell 终端

  • 运行Optimize-VHD -Path "C:\ProgramData\DockerDesktop\vm-data\DockerDesktop.vhdx" -Mode Full其中路径是 docker 桌面设置 > 资源 > 高级 > 磁盘映像位置中记录的路径。

  • 启动 docker 桌面

这应该会缩小 docker 虚拟机。