Могу ли я использовать 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/.

Другие вопросы по тегам