【问题标题】:Docker for Windows: The requested resource is in use error when mem_limit is setDocker for Windows:设置 mem_limit 时,请求的资源正在使用错误
【发布时间】:2021-04-19 13:28:07
【问题描述】:

问题

我经常偶然发现一个 Windows 容器,它拒绝在设置 mem_limit 的情况下运行,但以下异常:

Error response from daemon: hcsshim::CreateComputeSystem {container_guid}: The requested resource is in use.

有趣的是,如果我省略 mem_limit 设置,它运行得很好。 mem_limit 的值可以是任何值,它可以影响任何容器,甚至是那些曾经正常工作的容器。

我的设置

操作系统:Windows 10 Pro 20H2,但我在我拥有的几乎所有版本的 Windows 10 上都遇到了这个问题。 Docker 版本:20.10.5,构建 55c4c88 内存:64 GB

如何重现问题

我不知道,但似乎将 Docker 恢复为出厂默认设置会有所帮助。 (只有当您的 data-root 是默认值时,它似乎才有所帮助,而我的情况并非如此。)

【问题讨论】:

    标签: windows docker containers


    【解决方案1】:

    我遇到的每篇文章都以作者进行恢复出厂设置或 docker zap 结束,但就我而言,我负担不起——我有太多 Windows 映像要丢失,如果你做过任何docker 围绕 Windows 容器工作,你知道拉取新的 Windows 镜像是多么痛苦。

    我已经设法找到了我认为可以解决问题的方法。以下是我最终解决它的方法(到目前为止,我还没有遇到一个无法解决的情况):

    1. 检查容器使用的端口是否没有被其他东西使用,
    2. 检查安装到映像中的卷:您映射的文件夹必须存在,并且 docker 必须对它们具有读写权限。
    3. 重新拉取所有容器镜像。如果是您自己的镜像,请重新拉取所有基础镜像并重建镜像。

    我希望以上内容对阅读本文的人有所帮助。

    更新:

    事实证明,出于某种原因,拉取基础镜像并不总是有帮助。在这种情况下,您可能需要尝试重新启动 Hyper-V 主机计算服务 (vmcompute)。

    【讨论】:

    • 非常感谢,您刚刚为我提供了所有可能的选项,最后一个可行:重新启动 vm 服务。再次感谢!
    • 重新启动 Hyper-V 主机计算服务 (vmcompute) 对我有用!谢谢!
    【解决方案2】:

    我重新启动 vmms 服务(虚拟机管理 Hyper-V)并且它可以工作

    【讨论】:

    • 这不是一个正确的答案,详细说明它如何解决OP的问题。
    • 我终于到了可以测试重启 vmms 服务的地步,但它并没有解决我的问题——之后我仍然需要重启 vmcompute 服务。不过,我仍然很难理解为什么会出现这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 2011-10-19
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    相关资源
    最近更新 更多