我在npmdocker容器中运行,并且由于无法分配足够的内存而经常中止。我在命令中看到一些标志--memory(例如如何使用docker设置分配给容器的资源?)docker run,似乎限制了容器可以消耗的最大内存量,但是还没有看到任何可以允许我保留的内存容器的内存量,如果无法分配,则立即中止。
这不是Linux下内存管理的工作方式。
如果您运行完全虚拟化(例如QEMU),则可以分配所有内存并将其传递到VM中。然后,该VM引导内核,并且内存由VM中的内核管理。
在Docker或任何其他容器/命名空间系统中,内存由运行docker和“容器”的内核管理。在容器中运行的进程仍然像正常进程一样运行,但运行方式不同cgroup。每个cgroup都有限制,例如内核将向用户空间分配多少内存,或看到的网络接口是什么,但它仍在同一内核上运行。
与此类似,码头工人是“荣耀的ulimit”。低于此限制的进程仍然像正常的Linux进程一样运行
就像您无法为Firefox预先分配内存一样,您也无法为Docker容器预先分配内存。
| 归档时间: |
|
| 查看次数: |
2738 次 |
| 最近记录: |