Как ограничить использование памяти в docker-compose? - PullRequest
2 голосов
/ 31 мая 2019

Вот часть моего файла docker-compose.yaml

version: '3.4'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    working_dir: /app
    deploy:
      resources:
        limits:
          cpus: '0.50'
          memory: 23M

Начиная с docker-compose up -d

Когда я делаю docker stats, он говорит, что предел по-прежнему составляет 1,9 ГБ. Что я делаю не так?

CONTAINER ID      NAME     CPU %     MEM USAGE / LIMIT     MEM %
13b6588evc1e      app_1    1.86%     20.45MiB / 1.952GiB   1.02%

Ответы [ 3 ]

0 голосов
/ 31 мая 2019

Вы запускаете docker-compose в режиме роя?Если не рекомендуется запускать версию 2.x формата файла compose.

3.X требует, чтобы docker-compose запускался в режиме роя, чтобы новый набор директив ресурса вступил в силу.

Альтернативыв 2.X: cpu_shares, cpu_quota, cpuset, mem_limit, memswap_limit, mem_swappiness

0 голосов
/ 01 июня 2019

Если вы не собираетесь использовать развертывания стека роя докеров, всегда придерживайтесь последней версии 2.x, поддерживаемой версией докерного движка, с которой вы работаете.Docker версии 17.12 и более поздние поддерживают создание файла версии 2.4.В Docker-Compose есть все функции, которые предоставляет клиент, в то время как в Swarm некоторые из них отсутствуют: см. https://github.com/moby/moby/issues/25303.

Если вы используете docker-compose, все элементы, относящиеся к Swarm, в файле 3.x будутигнорировать, кроме секретов (или это были конфиги ?!).Если вы начнете смешивать элементы только 3.x с элементами 2.x, ваша конфигурация станет недействительной.

0 голосов
/ 31 мая 2019
Клавиша

deploy работает только в режиме роя и для docker-compose файла версии 3 и выше.

В вашем случае используйте docker-compose файл версии 2 и определите ограничения ресурсов:

version: "2.2"

services:
  app:
    image: foo
    cpus: "0.5"
    mem_limit: 23m

См. Официальные документы здесь

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