首页 > 解决方案 > 为什么 docker 容器在启动时需要比运行时更多的 RAM?

问题描述

我有一个包含多个 docker 容器的 docker compose 文件。如果我将这些 Docker 容器一个接一个地放在depends_on中,所有容器都可以毫无问题地启动,最终我还剩下300MB 的RAM 内存。

但是当我尝试同时启动所有容器时,我收到了 OOM 错误。 内存消耗增加正常吗?

如果是这样,有人可以告诉我它是来自 Docker 端(正在启动额外的进程)还是由于我的容器。

标签: dockerdocker-composeout-of-memoryram

解决方案


在您的情况下,增加的 ram 是完全正常的。通过使用 depends_on 标志,您一次启动每个容器,没有它,您将同时启动多个容器。

Docker-compose 将在幕后使用额外的 RAM 来启动您的容器。因为它使用depends_on 标志工作,所以每个容器都有额外的RAM,因此能够启动。如果没有 depends_on 标志,因此我假设并发启动的 RAM 量超过了您可用的 300MB。

我建议为每个容器配置内存限制和预留 - 特别是在像您这样的 RAM 非常有限的情况下。


推荐阅读