【问题标题】:How to reduce default VM memory for Docker Linux containers on Windows如何减少 Windows 上 Docker Linux 容器的默认 VM 内存
【发布时间】:2019-03-25 00:55:38
【问题描述】:

场景

  • Windows 10 专业版
  • Docker 18.06.1-ce 在 Windows 容器模式下运行
  • 主机系统上有 4GB 可用内存
  • 使用 Hyper-V 虚拟机

问题

当尝试通过 Docker 的任务栏项目“切换到 Linux 容器”时,该过程会在几秒钟后失败,并显示有关“没有足够的内存来启动 Docker”的错误。

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

当 Docker 在 Windows 容器模式下运行时,Docker 的设置中没有“高级”部分可以轻松减少内存分配。

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

问题

是否有其他方法可以在不使用用户界面的情况下为 Docker 定义最大内存量(由于 Windows 容器模式中缺少“高级”部分,在这种情况下无法使用 - 在能够切换到之前) Linux 容器)?

【问题讨论】:

  • 安装一个简单的linux vm,然后在上面使用docker
  • 你在谈论使用例如VirtualBox 运行 Docker 还是有什么不同?
  • 使用任何虚拟化工具安装具有1GB内存的linux VM,然后你可以在那里安装docker
  • 感谢您的建议,但是这似乎不可行,因为如果这样做会使主机和来宾系统之间的卷共享变得更加困难(因为它必须被通告给该中间 Linux VM)。除此之外,它感觉有点像“VM inception”;-)
  • 从 Docker - 设置 - 高级设置中减少内存分配从 2048 Mb 到 1536 Mb 完成了这项工作。很奇怪,但它有效!

标签: docker windows-10 docker-machine hyper-v


【解决方案1】:

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

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

  • 退出 Docker
  • 在运行命令提示符下使用notepad %APPDATA%\Docker\settings.json修改settings.json文件(Windows-Key + R)
  • 将值memoryMiB调整为1024(之前一直是2048
    • 在 Docker 版本 19.x 及更高版本中,该属性称为 memoryMiB
    • 在 Docker 版本 18.x 和之前的属性被称为 VmMemory
  • 保存settings.json
  • 启动 Docker,终于可以使用“切换到 Linux 容器”了

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

Docker 18.x 及之前版本中的属性VmMemory

【讨论】:

  • 感谢 Oliver Hader,我使用了您的解决方案,但看不到 VmMemory,因此我尝试将 memoryMiB 更改为 1024 并且有效。希望对其他人有所帮助。
  • @Jambu Thx 提示,我终于更新并调整了最近 Docker 版本的答案和屏幕截图
猜你喜欢
  • 2016-05-24
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多