为什么删除Docker容器和图像不会释放Windows上的存储空间?如何解决?

pdkcd3nj  于 2023-03-13  发布在  Windows
关注(0)|答案(7)|浏览(572)

问题:

当我下载和运行容器时,它们会占用越来越多的空间。我找到了清理未使用的容器和图像的建议,我照做了。你猜怎么着?它们会消耗更多的磁盘空间!

目前为止我发现:

.docker\machine\machines\default\disk.vmdk文件有关,它只会变大!

磁盘.vmdk的日志:

size (MB)
1. with 2 images                1,376
2. downloading a new image X    ?
3. running X as Y               2,963
4. removing Y                   2,963
5. removing X                   3,106
6. removing all the images      3,126

到目前为止,我找到的唯一修复方法是运行docker-machine rm default,它会删除VM。问题是我必须再次下载所有映像。应该有更好的修复方法。有人能解释一下吗:
1."发生了什么事"
1.如何修复

v09wglhw

v09wglhw1#

您可以在Docker的最新版本上运行一些维护命令,这些命令将释放已停止的容器、悬空图像和悬空卷所占用的空间:

docker container prune -f
docker image prune -f
docker volume prune -f
mpbci0fu

mpbci0fu2#

在windows10上,这是一个主要问题,空间没有被释放,甚至在我运行docker system prune之后,我开始注意到这个问题,当我发现每周都有;我的SSD每2或3 GB的空间就会被填满。
尝试打开Docker桌面,点击UI右上角的疑难解答图标,然后单击“清理/清除数据”。这为我回收了空间。
另见:

  1. Windows 10操作系统:删除所有图像和容器#244后,Docker未释放磁盘空间
  2. Hyper Vui问题修复
    1.清除Hyper-V识别未使用的扇区
  3. Linux Docker大小增长问题修复
k5hmc34c

k5hmc34c3#

也许您正在使用的映像使用卷。如果它们使用卷,则删除容器不起作用。您还必须删除卷。为此,您必须在删除容器时指定-v标志

docker rm -v <container name or container id>

根据您的Docker版本,您可以使用更多命令。请查看此SO thread了解更多信息。您可以在此SO thread中了解更多有关孤立卷的信息

lnvxswe2

lnvxswe24#

使用以下命令删除所有不需要的容器和图像后:

  • 码头集装箱房
  • Docker图像rm
  • 码头集装箱修枝
  • Docker图像修剪
  • Docker卷修剪

我看不到任何磁盘空间被释放。我发现磁盘空间在我重新启动Docker桌面后被释放。

5t7ly7z5

5t7ly7z55#

在使用wsl 2的windows上按照以下步骤操作。**请注意,如果您按照以下步骤操作,您将丢失所有的docker图像和容器。**如果您想保留数据(图像和容器),那么您可以尝试其他人在此线程中提到的修剪选项。
定位docker存储数据的vhdx文件,这是docker使用的虚拟硬盘。

"P:\Users\your-username\AppData\Local\Docker\wsl\data\ext4.vhdx"

在我的例子中,Docker在这个文件中使用了大约27 GB的磁盘空间。即使删除了所有的图像和容器,Docker也没有将空闲磁盘空间释放回OS。x1c 0d1x
要回收磁盘空间,必须尝试GUI中的clean/purge data选项。当提示输入数据集名称时,选择WSL 2。这将清除并给予所有未使用的空间。
如果Docker守护程序未启动或磁盘空间未减少,则最后一个选项是从Docker桌面GUI恢复出厂设置,如下所示。

2mbi3lxu

2mbi3lxu6#

如果有人在Ubuntu上遇到这个问题:
在我的情况下,使用docker命令进行修剪和删除并没有多大帮助。
docker/overlay2文件夹出现问题。

febrin@laptop:/var/lib$ sudo du -sh docker/overlay2
361G    docker/overlay2

我不得不手动删除它。

6tdlim6h

6tdlim6h7#

我面临着一个类似的问题,而做docker-composition了,我得到了一些错误,由于依赖性问题,在我的requirements.txt文件,因为我的图像和容器没有得到创建,但我的磁盘空间越来越少。
我首先必须解决依赖关系问题,然后才能创建映像和容器,然后
如上所述,其他用户通过故障排除UI执行清理/清除操作释放了我的磁盘空间。

相关问题