Docker化节点应用程序后的内存限制是多少?

时间:2019-06-25 06:52:18

标签: node.js docker

在我的Node应用程序中,我正在使用缓存机制,我很困惑,我想知道在对它进行泊坞窗处理后,我的应用程序的内存大小是多少?

我正在使用Node 10.16.0-jessie-slim码头工人图像。

Dockerfile

#Getting base image
FROM node:10.16.0-jessie-slim

#Maitainer
MAINTAINER Rajath

WORKDIR /app
COPY package.json /app
RUN npm install 
COPY . /app
EXPOSE 7234
CMD ["npm", "start"]

2 个答案:

答案 0 :(得分:3)

未在Dockerfile或Docker-Image内部指定内存。而是在使用--memory-m标志启动容器时分配一个Memory-Limit。如果您没有分配任何限制,则容器将没有限制,而是将使用服务器的最大内存。

Read more here

答案 1 :(得分:1)

Dockerfile与内存限制或与资源相关的其他任何事物都无关。

AWS建议每个容器300-500 MB, enter image description here

因此,现在根据您的本地系统,内存取决于应用程序和每秒的请求。对于上述容器,我刚刚修改了您的Dockerfile,并使其nodejs和简单的快速应用程序在无任何请求的情况下在空闲状态下占用34MB内存。

FROM node:10.16.0-jessie-slim

#Maitainer
MAINTAINER Rajath
run apt-get -y update && apt-get install -y git-core
RUN git clone https://github.com/IBM-Bluemix/bluemix-hello-node /app
WORKDIR /app
RUN npm install 
EXPOSE 3000
CMD ["npm", "start"]

因此,您可以在此处运行docker stats,以检查容器消耗的内存和CPU以及可以分配的最大内存。每个nodejs容器最多34MB,最大15GB。

enter image description here

这都是基于docker的,现在为了进一步研究,您可以使用portainer来获取详细信息日志portainer

docker volume create portainer_data
 docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

一旦注册,您就可以检查

http://localhost:9000/#/containers/

内存处于空闲状态

enter image description here

CPU处于空闲状态

enter image description here

经过一点负载测试

enter image description here

enter image description here

  

那么,现在的问题是基础映像是否在内存中发挥作用?答案是,进行了一些修改并将基本图像设置为 Alpine ,并且容器内存中10MB的差异大约为{{1 }}从alpine到   25MB,其中30MBnode:10.16.0-jessie-slim34MB

修改了上面的图像,将基本图像设置为最轻的阿尔卑斯图像。

40MB

屏幕截图中的高山基础图像占用28MB enter image description here