Могу ли я использовать mem_limit в docker-compose? и как?
mem_limit поддерживается docker-compose? Как я могу проверить это?
У меня есть следующий docker-compose.yml
repository:
image: myregistry/my_nginx_image
mem_limit: 60m
volumes:
- /etc/localtime:/etc/localtime
ports:
- "80:80"
Как я могу доказать, что контейнер на самом деле не превышает 60 МБ ОЗУ?
Я использую:
- Докер 1.3.1
- docker-compose 1.1.0
4 ответа
Да. Docker-compose поддерживает ограничение памяти, и значение может быть установлено как в вашем примере с "m" для мегабайт.
С помощью команды "docker stats" можно проверить, какой лимит памяти установлен для запуска контейнера Docker.
Если имя вашего контейнера "repository_1", используйте эту команду:
docker stats repository_1
Результат этого будет аналогичен этому:
CONTAINER CPU % MEM USAGE/LIMIT MEM % NET I/O
repository_1 1.93% 4.609 MiB/60 MiB 7.20% 1.832 KiB/648 B
Согласно фиг документации, просто
mem_limit: 1000000000
должно быть достаточно. Я полагаю, вы должны отбросить "m" и использовать байты вместо мегабайт.
Если вы используете docker compose v3 вместо:
mem_limit: 60m
вам нужно указать лимит памяти в
deploy
раздел:
deploy:
resources:
limits:
memory: 60m
Это изменение описано здесь: https://docs.docker.com/compose/compose-file/compose-versioning/#version-2x-to-3x .
Вы можете найти, как настроить Docker для ограничения ресурсов (CPU & MEMORY) и как проверить свои ограничения в этом посте, написанном в прошлом году: https://goldmann.pl/blog/2014/09/11/resource-management-in-docker/.