答案1
尽管 Docker 与完全硬件虚拟化不同,但它仍以许多相同的方式和出于相同的原因运行。
虚拟机管理程序保留给定数量的内存,以便当它们和容器(或虚拟机)需要时可以使用这些内存,而无需向操作系统申请这些内存。
您设置的设置专门用于此目的,并且其行为方式与您观察到的正是出于此原因。这不是错误,更改其行为方式就是重写 Docker 的基本行为。
所以,一切都没有损坏,一切都正常运转。
我强烈建议您阅读 Docker 中的内存预留,以便更好地理解内存预留的原理和原因。Docker 是一款成熟的产品,我认为文档齐全。
为了“解决”您遇到的问题,请安装更多内存或更仔细地规划您的 Docker 内存需求,并按照设计使用此设置,而不是像现在这样一时兴起。
答案2
使用 WSL2 后端运行较新版本的 docker 桌面可以解决此问题。我无法提供更多细节,因为我自己也不太了解,但我已经安装了 WSL2 并注意到 docker 现在可以动态分配内存。
Docker Desktop 使用 WSL 2 中的动态内存分配功能,大大改善了资源消耗。这意味着,Docker Desktop 仅使用其所需的 CPU 和内存资源量,同时使构建容器等 CPU 和内存密集型任务运行得更快。