Каков был предел памяти после докеризации узла приложения? - PullRequest
1 голос
/ 25 июня 2019

В моем приложении 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 ]

3 голосов
/ 25 июня 2019

Память не указана внутри Dockerfile или Docker-Image. Вместо этого вы назначаете лимит памяти при запуске контейнера, используя флаг --memory или -m. Если вы не указали какое-либо ограничение, у Контейнера его нет и вместо него будет использоваться максимальная память серверов.

Подробнее здесь

1 голос
/ 25 июня 2019

Dockerfile не имеет ничего общего с ограничением памяти или чем-либо еще, связанным с ресурсами.

AWS рекомендует 300-500 МБ для каждого контейнера, enter image description here

Итак, теперь, согласно вашей локальной системе, память зависит от приложения и запроса в секунду. Для вышеупомянутого контейнера я только что изменил ваш Dockerfile и у меня есть nodejs и простое экспресс-приложение, занимающее 34 МБ памяти в состоянии ожидания без какого-либо запроса.

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, чтобы проверить память и ЦП, занятые контейнером, и максимальный объем памяти, который может быть выделен. 34 МБ контейнером nodejs и максимум 15 ГБ.

enter image description here

Так что все это основано на докере, теперь для дальнейшего изучения вы можете использовать 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

Процессор в состоянии ожидания

enter image description here

После небольшой загрузки теста

enter image description here

enter image description here

Итак, теперь вопрос в том, играет ли базовый образ роль в памяти? ответ: Да , с небольшой модификацией и установкой базового образа на Alpine , и есть разница в 10MB в памяти контейнера, базовое изображение alpine берется из 25MB до 30MB где, node:10.16.0-jessie-slim взятие от 34MB до 40MB

изменил вышеупомянутое изображение, установите базовое изображение в альпийское, которое является самым светлым изображением.

#Getting base image
#FROM node:10.16.0-jessie-slim
FROM node:alpine
#Maitainer
run apk add --no-cache git
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"]

Альпийское базовое изображение на скриншоте, занимающее 28 МБ enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...