Docker无法在Windows上启动:没有足够的内存来启动docker

时间:2017-04-02 15:27:55

标签: windows docker virtual-machine hyper-v

我正在尝试在Windows上使用Docker。我的机器有4GB内存和1.9GHz - 2.5GHz Intel i5处理器,运行Windows 10 Pro x64。我知道这些不是强大的规格,但我原以为我应该能够运行Docker?

但是,在下载了Docker后,我收到错误消息:

  

没有足够的内存来启动docker

我已经看过各种关于这个的论坛帖子和github问题,并遵循了我能看到的所有建议,例如修改Docker中的设置,我试过这些:

enter image description here

他们还提到了更改Hyper-V VM的设置,但是,似乎会删除并在每次尝试启动时使用Docker指定的设置重新创建。我尝试了2048MB,1792MB,1536MB,1280MB和1024MB的RAM,所有这些都失败了。

我还能做什么?当然我可以在我的机器上以某种形式运行docker?注意:我已关闭所有非必要的后台应用程序。似乎没有很多其他建议似乎是一个相当普遍的问题,给定的解决方案不起作用?

18 个答案:

答案 0 :(得分:32)

我也遇到了同样的问题。尝试了从提供动态内存到启用和禁用Hyper V等等所有功能。但尽管如此,我没有成功。

然后我尝试了这些步骤

Docker在Windows上无法启动:没有足够的内存来启动docker

1)在System Tray菜单中,右键单击 Docker 图标

2)选择切换到Windows容器...

3)重新启动系统。

重新启动docker状态后,您应该显示为: Docker正在运行

希望这有帮助!

PS:正如rfay所说,切换到大多数用户的Windows容器后,切换回Linux容器应该可以正常工作。

更新(2019年5月1日)

如果您仍然无法在Windows机器上启动泊坞窗,请使用上述方法,请尝试以下操作:

    来自Microsoft官方网站的
  • Download RAMMap
  • 打开应用程序,然后选择清空菜单
  • 从子菜单列表中选择第一个选项清空工作集
  • 现在按F5
  • 刷新它

现在尝试运行docker,我相信这应该可行。祝你好运!

RAMMap Application

答案 1 :(得分:3)

发布对我有用的内容

  1. 在docker中打开Resources设置
  2. 将内存设置为最低设置,在我的情况下为1024MB
  3. 打开任务管理器,确认我至少有上面指定的可用内存
  4. 重新启动docker,切换到linux容器

在我的情况下,这是有效的,因为我几乎将所有RAM与VScode和firefox一起使用,因此将它们关闭并进行尝试

答案 2 :(得分:2)

如果你在窗口并且出现此错误,         转到搜索框

SELECT day, 
       Abs(Sum(diffn)) AS totN 
FROM   (SELECT Date(datetime)              AS day, 
               Max(content) - Min(content) AS diffN 
        FROM   logs 
        WHERE  NAME = 'Foo' 
               AND datetime >= '2018-04-22 00:00:00' 
               AND datetime <= '2018-04-23 00:00:00' 
        GROUP  BY Date(datetime)) a 
GROUP  BY day; 

enter image description here

#1 type Hyper-V Manager 
 Click on it,
 a window like attached screenshot open,

答案 3 :(得分:2)

在“设置”中,我执行了重置为出厂默认设置。 并重新启动笔记本电脑。 它为我工作

答案 4 :(得分:2)

您是否在HyperV设置中启用了NUMA扩展?如果没有启用它,我敢打赌,它将解决您的问题。

默认情况下,Windows Server启用NUMA跨越,这提供了最大的灵活性,因为虚拟机(VM)可以访问和使用任何NUMA节点中的内存。但是,与强制VM使用与处理器内核相同的NUMA节点上的内存相比,这可能会导致性能降低。

通过禁用NUMA扩展,可以确保VM在同一NUMA节点中使用内存和处理器核心,从而提供最佳性能。  仅当您作为管理员对NUMA以及禁用的含义感到满意,并且还具有一些有助于确保最佳配置的其他管理套件时,才应该更改一次。

要配置NUMA跨越,请打开“ Hyper-V设置”,然后选择“ NUMA跨越”选项并将其禁用,我敢肯定,它将解决。我为此问题苦了一个星期,并通过禁用NUMA来解决了这个问题。

我确信通过在Hyper-V Manager中禁用NUMA可以将其标记为已解决。

答案 5 :(得分:2)

这不是RAM的问题。它是分配给docker的磁盘内存。
这意味着泊坞窗没有足够的空间来创建映像或任何其他与泊坞窗相关的操作。

打开docker设置>>高级>>磁盘映像最大大小

增加此大小并应用更改。

它将自动重新启动,然后您就可以开始了。

enter image description here

答案 6 :(得分:1)

我也有同样的问题。也许你在Hyper-v中有其他虚拟机,其他虚拟机也需要内存。请停止所有其他Hyper-v虚拟机并再次测试。对我来说工作 My Hyper-v Manager

enter image description here

答案 7 :(得分:1)

因此,首先我通常先打开Visual Studio Code,然后打开终端,最后打开Docker Desktop WSL2。问题在于Visual Studio Code是一个笨拙的内存消耗者,最初需要大量内存才能运行。尤其是如果您使用集成终端,多个选项卡以及最终多个窗口。

最后一次打开Docker Desktop时,它没有给我足够的资源错误。经过一番混乱和测试后,我发现Docker首先需要首先加载,因为它需要获取一定数量的内存才能运行您的容器和图像。因此,手动启动Docker Desktop而不是在Windows启动时启动,那么您的其他程序和工具应该应该这样做,因为每个人的环境和问题都与我的不同,并且我不希望它们相同,所以可以正常工作。

步骤如下:

  1. 打开计算机时,我的操作系统是Windows 10,将WSL2与Home配合使用,不要在启动时立即打开Docker。而是通过双击图标或在开始菜单中搜索并单击Docker Desktop来手动运行程序。
  2. 接下来,我们接下来要打开Windows Visual Studio Code和其他程序。
  3. 在运行任何命令之前,就像我确实使用特定package.json定义的命令通过节点js运行它们一样,请检查docker桌面,因为有时您的容器和映像已经在运行,因此不需要运行任何命令来启动它们再次。

如果所有操作均失败,请尝试进入您的设置并分配特定的内存。检查您的任务管理器流程,查看占用了您所有资源的资源。我希望这有帮助。同样,每个人的环境都不一样,因此不要期望获得与我相似的结果。这项工作并不意味着会。阅读文档,它确实有助于更快地发现问题。

答案 8 :(得分:1)

我通过右键单击Docker托盘图标选择设置来解决此问题,然后在“高级”部分中点击。

然后,我将内存从默认的2048降低到1536,并且像魅力一样工作。 另一个选择是尝试切换到Windows容器,然后重新启动计算机,然后再切换回Linux容器。

以下是我的docker设置,其中“高级”选项卡处于打开状态。请注意,内存为1536,我的笔记本电脑为4GB Ram。

enter image description here

虚拟机“ MobyLinuxVM”正在运行,如下所示;

enter image description here

我希望这对某人有帮助,即使回答迟了:)

答案 9 :(得分:0)

我也遇到过同样的问题:Docker在Windows中的内存不足。

我通过以下三个步骤解决了问题。

1。通过单击鼠标右键退出Docker Desktop。 2.现在以管理员身份运行Docker Desktop。 3.现在,重新启动Windows系统。

现在Docker将正常运行。这个解决方案对我有用。 :)

答案 10 :(得分:0)

之所以会发生这种情况,是因为在您启动docker时ram并不是免费的

我已经打开了浏览器的20个选项卡,导致没有免费的ram,所以我关闭了所有选项卡,几次刷新计算机,然后尝试再次重新启动,并且对我有用

答案 11 :(得分:0)

我的Windows 10笔记本电脑具有8 GB的RAM。我也使用虚拟内存。 当我启动操作系统并立即运行一些需要大量RAM的应用程序时,只有在停止大多数应用程序后才能启动Docker。

还:https://stackoverflow.com/a/45816385/7082956也帮助了我。

答案 12 :(得分:0)

我有同样的问题。以我为例,我在Hyper-V上运行了另一个VM,该VM正在消耗所有资源。即使系统重启后,VM始终处于活动状态。我打开了Hyper-V Administrator,并停用了有问题的VM。然后我可以正确启动Docker。

答案 13 :(得分:0)

只需执行以下步骤:

  1. 转到Docker仪表板中的故障排除。
  2. 单击“清除/清除数据”。
  3. 选择所有选项,然后按Delete键。

需要几分钟。 (对我有用)

答案 14 :(得分:0)

重新启动PC -_-后问题已解决。不知道那是什么。

答案 15 :(得分:0)

问题: 已安装Docker Desktop。 从linux实例启动时出现内存不足错误。

详细信息: 操作系统:Windows 10 Professional 主机:联想ThinkPad Carbon X1,4GB RAM Docker Desktop:版本2.1.0.1(37199) Docker高级设置:

  • CPU:2
  • 内存:2048MB(最大)
  • 交换:2048MB
  • 磁盘映像大小:59.6GB(已使用4MB)

DockerDesktopVM的Hyper-V设置:

  • “设置”>“内存”>“ RAM”:2048MB(尝试增加到4096;仍然不起作用)
  • 设置>内存>启用动态内存(已选中/未选中;两者均无效)

在上述设置的变体下,Docker Desktop在启动/重新启动时出现此错误:

没有足够的内存来启动Docker Desktop 您正在尝试启动Docker Desktop,但是没有足够的内存。 释放一些内存或更改设置。

以下链接中报告的问题解决方法,例如从Windows实例开始,然后切换回Linux,无论我通过Hyper-V或Docker设置分配多少内存,都对我不起作用。

这非常令人沮丧,因为显然人们在报告说能够在具有4GB RAM的主机上启动linux实例。所以我想知道我在做什么错。

已研究/尝试过的资源:

问题:

  1. 我什至可以在主机上运行带有Linux实例的Docker Desktop吗?
  2. 如果(1)是,那么什么设置可以使我做到这一点?

答案 16 :(得分:0)

我降低了内存并交换到最低内存,并将磁盘映像大小更改为32gb,它终于启动了,而无需切换到Windows容器或重新启动。

答案 17 :(得分:0)

遇到此问题时,我修改了在C:\ Program Files \ Docker \ Docker \ resources中的Docker安装的资源文件夹中找到的PowerShell脚本MobyLinux.ps1。从本质上讲,我将$ CPU的值强制设置为2,将$ Memory的值强制设置为512,这对于我的开发盒的有限资源是有用的!

enter image description here

这时,当Docker在Hyper-V中删除MobyLinuxVM实例并从PowerShell脚本重新创建它时,它现在使用我的值: enter image description here

这次,VM保持启动并稳定,并且Docker成功从Windows容器切换到Linux容器:

enter image description here

希望这对某人有帮助。