【问题标题】:Incrementing GB of Ram for Docker Container in Windows在 Windows 中为 Docker 容器增加 RAM 的 GB
【发布时间】:2021-05-06 20:36:15
【问题描述】:

我正在按照本教程https://docs.docker.com/docker-for-windows/#docker-settings-dialog 在 Windows 中安装 docker。我被困在资源选项卡下的设置部分。我对资源的看法并未显示它在该链接上的显示方式。有没有办法增加我的 Ram,所以我可以让 ELK 运行。我用 Hyper-V 安装了 Docker 桌面应用程序。

这是我在设置中看到的。

我应该看到的,但不是。

【问题讨论】:

  • 根据您链接的页面,The Advanced tab is only available in Hyper-V mode, because in WSL 2 mode and Windows container mode these resources are managed by Windows. In WSL 2 mode, you can configure limits on the memory, CPU, and swap size allocated to the WSL 2 utility VM.您确定您使用的不是 WSL2 支持的版本吗?

标签: docker docker-for-windows docker-desktop


【解决方案1】:

虽然您提到使用 Hyper-V,但由于您的屏幕截图(特别是 WSL 集成选项卡),我怀疑您可能在 WSL2 模式下运行 Docker Desktop,而不是 HyperV 模式。 (据我了解,WSL2 在许多情况下是更新、更快的选择)。

在这种假设下,要更改 WSL 2 VM 中的 RAM,您必须使用 VM 设置创建一个 C:\Users\username\.wslconfig 文件。详细信息在this page 上进行了描述,实际上与您提到的页面链接。

这是.wslconfig 文件的示例:

[wsl2]
memory=9GB # Limits VM memory

请注意,这适用于 所有 WSL2 VM(我猜它们被称为发行版?),我不确定这是否完全正确,因为 Docker 似乎自己生产了 2 个发行版,加上您拥有的任何其他发行版(请参阅wsl --list)。你想增加所有发行版的内存吗?

但是,引用this page

WSL 2 的内存使用量会随着您的使用而增长和缩减。当进程释放内存时,它会自动返回给 Windows。

在我看来,.wslconfig 内存设置是一个最大大小,仅在需要时分配,所以我假设为所有 WSL 发行版设置它不会导致它们在发行时立即膨胀到 9GB除非那些发行版尝试使用所有内存。

他们接着说:

但是,目前 WSL 2 尚未将内存中的缓存页面释放回 Windows,直到 WSL 实例关闭。如果您长时间运行 WSL 会话,或者访问大量文件,则此缓存可能会占用 Windows 上的内存。我们正在通过WSL Github repository issue 4166跟踪改善这种体验的工作

我在大型 ML 作业中遇到过这种内存膨胀的问题,所以需要注意一些事情。

所以,.wslconfig 更改似乎对我有用。另一个对我有帮助的选择是通过.wslconfig 增加swap 的大小,因为我的机器内存有限。

【讨论】:

  • 而且因为尽管我一直在搞砸这些东西,我只是对此有了顿悟,我认为 WSL Integration发行版(在 Docker 桌面设置中)是指在该发行版中运行 Docker 命令的可用性(与运行所有 Docker 工具和容器的 2 个 Docker 发行版分开)。换句话说,我能否从我的默认 WSL Ubuntu 发行版运行 Docker 命令并访问 Windows 主机上 Docker Desktop 中的相同图像和容器?这是通过 Docker Desktop 中的WSL Integration 设置打开的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-15
  • 2016-09-21
  • 2019-12-15
相关资源
最近更新 更多