【问题标题】:Docker won't start on Windows: Not Enough memory to start dockerDocker 不会在 Windows 上启动:没有足够的内存来启动 docker
【发布时间】:2017-08-27 11:04:22
【问题描述】:

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

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

没有足够的内存来启动 docker

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

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

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

【问题讨论】:

  • 您的第二个屏幕截图显示您的 VM 分配了 64MB 的 RAM。这是非常小的。
  • @Wyzard 是的,我尝试这样做以确保有足够的系统资源用于它,但它不起作用。我应该试试别的吗?
  • 您使用的是哪个 Windows 版本?我们最近更改了 Hyper-V 为 VM 分配内存的方式——更新可能会有所帮助。 Blog
  • 我遇到了同样的问题,我的 Docker 设置中甚至没有“高级”菜单项。如何显示此选项?
  • @rluks 我认为只有在使用 Linux Containers 时才能获得 Advanced 选项卡。

标签: windows docker virtual-machine hyper-v


【解决方案1】:

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

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

1.单击鼠标右键退出 Docker Desktop。 2. 现在以管理员身份运行 Docker Desktop。 3. 现在重启你的windows系统。

现在 Docker 可以正常工作了。这个解决方案对我有用。 :)

【讨论】:

    【解决方案2】:

    所以我通常从打开 Visual Studio Code 开始,然后是我的终端,最后是 Docker Desktop WSL2。问题在于 Visual Studio Code 是一个庞大的内存占用者,最初需要大量内存才能运行。特别是如果您使用集成终端、多个选项卡以及最终的多个窗口。

    当我最后打开 Docker Desktop 时,它给了我没有足够的资源错误。经过一番折腾和测试,我发现 Docker 最初需要先加载,因为它需要获取一定数量的内存才能让您的容器和镜像运行。所以手动启动 Docker Desktop,而不是在 Windows 启动时,然后你的其他程序和工具应该,我说应该因为每个人的环境和问题都与我的不同,我不希望它们是相同的,工作正常。

    以下是步骤:

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

    如果这一切都失败了,请尝试进入您的设置并分配特定的内存。检查您的任务管理器进程,看看是什么占用了您的所有资源。我希望这有帮助。再说一次,每个人的环境都不一样,所以不要指望我有类似的结果。这应该工作并不意味着它会。阅读文档,它确实有助于更快地发现问题。

    【讨论】:

      【解决方案3】:

      这可能是因为在您启动 docker 时 ram 不是空闲的

      我打开了 20 个浏览器选项卡,导致没有可用的内存,所以我关闭了所有选项卡刷新计算机几次,然后尝试再次重新启动,它对我有用

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

          我遇到了同样的问题。在我的例子中,我有另一个在 Hyper-V 上运行的虚拟机正在消耗所有资源。即使在系统重新启动后,VM 也始终处于活动状态。我打开 Hyper-V Administrator 并停用有问题的 VM。然后我就可以正常启动Docker了。

          【讨论】:

            【解决方案6】:

            只需按照以下步骤操作:

            1. 转到 Docker 仪表板中的疑难解答。
            2. 点击清理/清除数据。
            3. 选择所有选项并按删除。

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

            【讨论】:

              【解决方案7】:

              发布对我有用的东西:

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

              在我的情况下,这很有效,因为我几乎所有的 RAM 都用于 VScode 和 firefox,所以关闭它们并尝试,它工作了

              【讨论】:

                【解决方案8】:

                重启电脑后问题解决-_-。不知道那是什么。

                【讨论】:

                  【解决方案9】:

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

                  详情: 操作系统:Windows 10 专业版 主机:联想 ThinkPad Carbon X1,4GB RAM Docker 桌面:版本 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) 是肯定的,那么哪些设置允许我这样做?

                  【讨论】:

                  • 你不应该把问题作为答案。
                  【解决方案10】:

                  我通过右键单击泊坞窗托盘图标选择设置然后点击“高级”部分解决了这个问题。

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

                  下面是我打开高级选项卡的 docker 设置。请注意,内存是 1536,我的笔记本电脑有 4GB 内存。

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

                  我希望有一天这对某人有所帮助,即使是一个迟到的答案:)

                  【讨论】:

                    【解决方案11】:

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

                    然后我尝试了这些步骤

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

                    1) 从系统托盘菜单中,右键单击 Docker 图标

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

                    3) 重启系统。

                    重启后你的 docker 状态应该显示为:Docker is running

                    希望这会有所帮助!

                    PS:正如 rfay 所说,在切换到 Windows 容器后,大多数用户现在应该可以切换回 Linux 容器了。


                    更新(2019 年 5 月 1 日)

                    尽管有上述方法,如果您仍然无法在 Windows 机器上启动 docker,请尝试以下操作:

                    • Download RAMMap来自微软官网
                    • 打开应用程序并选择Empty菜单
                    • 从子菜单列表中选择第一个选项Empty Working Sets
                    • 现在按F5 刷新它

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

                    【讨论】:

                    • 这对我有用,在尝试了我能想到的一切之后......ta!
                    • 所以切换到windows容器意味着你不能再运行Linux容器了,这是大多数人都在运行的。但是,当我遇到这个问题时,切换到 Windows 容器然后切换回 Linux 容器就可以了。
                    • 嗯,它对我有用,因为我首先运行的是 Linux 容器,但我很好奇为什么会发生这种情况。
                    • 这工作完美无缺。应标记为正确答案
                    • @Kersy 如果您在 stackoverflow 上找到任何有用的答案,请不要忘记为答案投票。这对回答问题的人来说意义重大。
                    【解决方案12】:

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

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

                    增加此大小并应用更改。

                    它会自动重启,然后你就可以开始了。

                    【讨论】:

                      【解决方案13】:

                      我降低了内存并交换到最低限度,磁盘映像大小为 32gb,最终无需切换到 Windows 容器或重新启动即可启动。

                      【讨论】:

                      • 几小时后就做到了。简单优雅的解决方案
                      【解决方案14】:

                      当我遇到这个问题时,我修改了位于 C:\Program Files\Docker\Docker\resources 的 Docker 上的资源文件夹中的 PowerShell 脚本 MobyLinux.ps1。本质上,我将 $CPUs 的值强制为 2,将 $Memory 的值强制为 512,这适用于我的开发盒有限的资源!

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

                      这一次 VM 保持正常运行,Docker 成功从 Windows 容器切换到 Linux 容器:

                      希望这对某人有所帮助。

                      【讨论】:

                        【解决方案15】:

                        您是否在 HyperV 设置中启用了 NUMA 跨越?如果不启用它,我打赌这将解决您的问题。

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

                        通过禁用 NUMA 跨接,您可以确保虚拟机使用同一 NUMA 节点中的内存和处理器内核,从而提供最佳性能。 这应该只更改一次,如果作为管理员,您对 NUMA 和禁用的影响感到满意,并且如果您有一些额外的管理套件可以帮助确保最佳配置。

                        要配置 NUMA 跨越,打开 Hyper-V 设置并选择 NUMA 跨越选项并禁用它,我相信它会得到解决;我为这个问题苦苦挣扎了一周,并通过禁用 NUMA 解决了这个问题。

                        我确信这会通过在 Hyper-V 管理器中禁用 NUMA 来标记为已解决。

                        【讨论】:

                        • 它对我不起作用。我的主机规格几乎与该线程中的原始帖子相同。我一直在尝试此处报告的几乎所有建议的修复,但无济于事。
                        【解决方案16】:

                        在“设置”中,我进行了重置为出厂默认设置。 并重新启动笔记本电脑。 它对我有用

                        【讨论】:

                        • 有 Windows 10 更新。系统已正确更新。但是docker无法启动。发生此内存问题。重置为出厂默认设置后,它对我有用。谢谢
                        【解决方案17】:

                        如果您在窗口中并收到此错误, 转到搜索框

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

                        #2 Select  MobilinuxVM(normally same name if running windows docker)
                        #3 Right click and open - Setting 
                            2 The second window will open(setting for MobiLinux) i.e to the screenshot.
                        #4 Go to Memory Tab in left Pane.
                        #5 click on a dynamic checkbox and set minimum value to some lower amount say 512, and max value to the desired one,
                        #6 apply 
                        now it will start running as well after few minutes take the amount it required as well.
                        

                        【讨论】:

                        • 不起作用,因为 Docker 只是在下次启动时覆盖了设置
                        【解决方案18】:

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

                        【讨论】:

                        • 感谢@Dmitry 编辑
                        猜你喜欢
                        • 2015-08-01
                        • 1970-01-01
                        • 2017-03-20
                        • 2018-10-12
                        • 2016-12-08
                        • 2017-03-13
                        • 1970-01-01
                        • 1970-01-01
                        • 2015-02-21
                        相关资源
                        最近更新 更多