如何减少 Windows 上 Docker Linux 容器的默认 VM 内存

How to reduce default VM memory for Docker Linux containers on Windows

场景

问题

当尝试通过 Docker 的任务栏项目 "switch to Linux containers" 时,过程在几秒钟后失败,显示有关 "Not enough memory to start Docker" 的错误。

由于主机系统没有那么多内存,我想减少全局 Docker 机器允许使用的最大内存量(我认为此处默认为 2 GB)。因此,我想将其减少到 1 GB。

当 Docker 运行 处于 Windows 容器模式时,Docker 的设置中没有 "advanced" 部分可以减少轻松分配内存。

我能够使用 Windows' Hyper-V 管理器找到 "MobyLinuxVM"。但是,当在那里调整内存设置时,每次我启动 Docker 并再次尝试切换到 Linux 容器模式时它都会被覆盖。

问题

是否有不同的方法来定义 Docker 的最大内存量而不使用用户界面(由于 "advanced" 中缺少 "advanced" 部分,这在这种情况下不起作用53=] 容器模式 - 在能够切换到 Linux 容器之前)?

经过一番搜索,我发现Docker的用户界面设置存储在%APPDATA%\Docker\settings.json中(例如C:\Users\olly\AppData\Roaming\Docker),内存设置在memoryMiB中定义属性.

以下解决了我环境中的问题:

  • 退出Docker
  • 在 运行 命令提示符 (Windows-Key + R)
  • 中使用 notepad %APPDATA%\Docker\settings.json 修改 settings.json 文件
  • 将值memoryMiB调整为1024(之前是2048
    • 在 Docker 版本 19.x 之后 属性 被称为 memoryMiB
    • 在 Docker 版本 18.x 和 属性 被调用之前 VmMemory
  • 保存settings.json
  • 开始 Docker 并最终能够使用“切换到 Linux 容器”

属性 memoryMiB Docker 版本 19.x 及更高版本

属性 VmMemory 在 Docker 版本 18.x 之前