Docker在Mac中的内存使用情况(com.docker.hyperkit)

121

我在MacOS Mojave上运行Docker桌面社区版2.1.0.3。我为Docker分配了8GB的内存,这已经很多了(占用了一半的RAM)。即使退出并重新启动Docker for Mac,也就是没有容器在运行,但Docker的内存分配已经超出了1GB。

没有运行容器时,Docker的预期内存使用情况是什么?Docker for Mac或Docker的hyperkit中是否存在内存泄漏?

输入图像描述

docker for mac memory leak


2
我在本地系统上看到了这个,但我可以右键单击列标题并启用“实际内存”和“压缩内存”列。我怀疑这一列正在过度计算进程为其腾出空间的虚拟内存,但实际上并没有请求实际内存。 - David Maze
6
在https://github.com/docker/for-mac/issues/3232中有一个链接,指向以下文档:《了解Mac上Docker Desktop的内存使用情况》(Understanding memory usage in Docker Desktop on Mac),其中还提到要检查“实际内存”。里面有多次实验,其中包含一些不错的细节。 - GabLeRoux
1
Docker 在我的 MacBook Pro 上也使用了 50% 的 CPU... - fuat
2
我的 CPU 使用率是 160%。我的系统是 Mac OS Catalina 10.15.5,Docker 版本为 2.3.0.3 稳定版。我的电脑风扇疯狂转动。 - melih sahin
1
我的Mac也完全做到了@melihsahin所描述的。 - Thayz
显示剩余2条评论
3个回答

98

正如@GabLeRoux在评论中分享的那样,“实际内存”使用量比“活动监视器”中“内存”列中看到的要低得多。

这份文档详细解释了Mac OS上使用Docker Desktop的内存使用情况,并从中摘录了信息。

要查看Docker使用的“实际内存”,请在“活动监视器”中右键单击列名称,然后选择“实际内存”。该列中的值是当前分配给com.docker.hyperkit的物理内存。

在此输入图片描述


22
就我的情况而言,Hyperkit 占用了 14.26GB 的内存和 114MB 的实际内存。kernel_task 占用了 11.44GB 的实际内存。停止 Hyperkit 后,kernel_task 的内存占用量下降到了 7.8GB。 - Anton Kuzmin
4
好的。问题的解决方案是什么?如果启动Docker会挂起系统,应用程序会冻结。停止Docker正常工作。是的,在活动监视器界面中有内存差异。我只看到 com.docker.hyperkit 的值很大。 - devansvd
14
那么答案是“不用担心”? - MikeSchem
27
我的风扇仍在疯狂旋转,而且我的笔记本电脑变得更慢了。 - yudhiesh
3
如果hyperkit实际消耗的内存比分配的内存显著低,您可以配置Docker桌面应用程序使用更接近实际内存使用量的内存数量。 - yair
显示剩余6条评论

37

替代答案:我在Docker资源偏好设置中减少了允许Docker使用的CPU和内存。现在我的电脑运行更快,更静音。

我刚刚实施了这个方法,时间会告诉我这个解决方案是否适用于我。以前它使我的电脑内存达到最大值。现在它显著降低了。

感谢你提供实际内存的提示。我已经把它添加到我的Activity Monitor上了。

更新:现在已经过了几天,我的电脑运行的内存远低于最大值,并且我的风扇最小化甚至没有运转。

Docker资源

Mac内存活动

Mac内存使用


7
这正是我一直在寻找的。我的电脑现在已经回到了地球,谢谢! - Ransom
3
当涉及到资源时,我不知道为什么人们说Docker比VirtualBox更好...这些设置在VirtualBox中也是相同类型的...限制它们会产生相同的效果。 - SteveExdia
1
这是 Mac 的限制,必须启动虚拟机来代替本地运行 Docker,并且内存使用最小化。 - Alex R

2

我认为在内存未满的情况下不应使用交换空间,这样有利于SSD的健康和速度。


2
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接