如何解决Docker桌面耗尽所有内存并崩溃
在Windows 10中使用具有6个容器的Docker桌面(19.03.13),具有16GB RAM。
在docker stats
中,每个容器消耗20-500 mb,总计约为1gb。
但是在任务管理器中,泊坞窗吃了10GB内存,并且由于缺少系统内存而崩溃。
如何检查,是什么消耗了docker中的大量内存? 以及如何防止这种情况?
解决方法
尝试在用户文件夹 .wslconfig
的根目录创建一个 C:\Users\<my-user>
文件,以调整 Docker 将使用的内存和处理器数量。
这是 .wslconfig
文件的内容。
[wsl2]
memory=2GB # Limits VM memory in WSL 2 up to 2GB
processors=2# Makes the WSL 2 VM use two virtual processors
然后,重新启动计算机。您会发现 Vemm
进程只会占用您之前定义的 RAM 量。
您可以在此处了解更多信息here
,我猜想Windows上存在与MacOS类似的东西。
- 打开您的docker应用并转到仪表板
- 单击任何容器
- 点击
Stats
您将获得有关CPU,RAM使用情况,磁盘读写内存和网络使用情况的信息。
当我经常遇到内存问题时,我会设置别名脚本,这些脚本可以链接在一起以停止/杀死/重新启动,并在容器上进行所需的设置。
除非您想开始贡献并提出拉取请求,否则无法阻止docker表现出其行为方式。这不是一个罕见的问题。 Docker是一项免费服务,我建议您解决它的不足之处。
,据我所知,docker stats不显示RAM预留。尝试使用-m标志设置RAM限制。有一些信息如何使用docker控制资源: https://docs.docker.com/config/containers/resource_constraints/?spm=a2c41.12663380.0.0.59ed566dAqUZPu
,我猜您正在使用基于WSL 2的新引擎,请尝试通过打开docker settings
-> general
->取消选中{来将将docker引擎切换回Hyper-V {1}}。
说明:
自从引入WSL 2引擎以来,我注意到它开始发生在我身上,由于它是新引擎,所以我自动切换到它。从那以后开始出现内存问题。
重新启动/关闭docker并没有释放内存,我在任务管理器Use WSL 2 based Engine
中注意到那是消耗所有内存的内存,因此不得不强制关闭它(导致docker无法正常工作)。
我所做的最后一件事是将docker引擎切换回Hyper-V 解决了我的高内存使用率。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。