Docker for Windows:设置 mem_limit 时,请求的资源正在使用中错误

Vad*_*imG 10 windows containers docker

问题

我经常偶然发现一个 Windows 容器拒绝使用 mem_limit 设置运行,但存在以下异常:

Error response from daemon: hcsshim::CreateComputeSystem {container_guid}: The requested resource is in use.
Run Code Online (Sandbox Code Playgroud)

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

我的设置

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

如何重现问题

我不知道,但似乎将 Docker 恢复为出厂默认设置会有所帮助。(它似乎只有在你data-root是默认的情况下才有帮助,但对我来说并非如此。)

Vad*_*imG 10

我遇到的每一篇文章都以作者进行了工厂重置或 docker zap 结束,但就我而言,我负担不起——我有太多的 Windows 映像要丢失,如果你已经做了任何 docker 解决方案Windows容器,你知道拉取新的Windows镜像是多么痛苦。

我已经设法找到我认为是问题的解决方案。这是我最终解决它的方法(到目前为止,我还没有遇到过它不起作用的情况):

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

我希望以上内容对阅读本文的人有所帮助,就像它对我有帮助一样。

更新:

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

  • 重新启动 Hyper-V 主机计算服务 (vmcompute) 对我有用!谢谢你! (4认同)
  • 非常感谢,您刚刚为我提供了所有可能的选项,最后一个有效:重新启动虚拟机服务。再次感谢! (3认同)

小智 5

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