我正在研究一个项目,其中将应用程序划分为多个docker映像,并且我正在运行5个容器,每个容器都有自己的映像。遵循“每个容器一个进程”规则。
为此,我正在使用只有480Mb内存的beaglebone黑色。有时,应用程序运行一段时间后,由于内存不足异常而崩溃。
所以我想知道如果我缩小图像会占用更少的内存吗?如何为每个容器分配内存?
如果我将一些图像/容器分组到一个运行多个过程的容器中怎么办?它会使用更少的内存吗?
答案 0 :(得分:0)
当一个进程因OOM异常而被杀死时,这与docker映像大小无关,这是该进程试图使用的内存量。
您可以在运行每个容器时为其指定一些内存限制。
例如,这会将您的容器限制为100MB的内存。
docker run -m 100M busybox
但是,如果您的应用程序超出了分配的内存,它们将被OOM异常杀死。您遇到的问题很可能是因为您正在运行的应用程序的最低要求高于您的beaglebone black。
将进程分组到一个容器中将无济于事,它们仍将使用相同数量的内存。