Ограничить ресурсы в docker-compose v3

mem_limit больше не поддерживается в версии 3 файла docker-compose.yml. Документация говорит, что я должен использовать ключ deploy.resources, но также и то, что эта часть будет эффективна только с стеком рой или докеров.

cpu_shares, cpu_quota, cpuset, mem_limit, memswap_limit: они были заменены ключом ресурсов при развертывании. Обратите внимание, что настройка развертывания вступает в силу только при использовании развертывания стека докеров и игнорируется командой docker-compose.

... как написано в документах.

Как установить ограничения памяти /cpu с помощью docker-compose с v3 файлом файла yml?

Ответ 1

Мне было интересно то же самое, и я нашел это: https://github.com/docker/compose/issues/4513

Короче говоря, это просто невозможно сделать, вы должны использовать версию 2.1 формата docker-compose, чтобы иметь возможность указывать ограничения, которые не игнорируются docker-compose up

Ответ 2

Я искал эту проблему некоторое время назад. Я нашел свой ответ здесь. Сначала я пытался реализовать эту функциональность без использования стека докеров, но это не сработало.

Вот фрагмент кода, который вы бы использовали для ограничения потребления ЦП/памяти контейнером. Дополнительные атрибуты вы можете найти в документации докера.

 deploy:
  replicas: 5
  resources:
    limits: 
      cpus: "0.1"
      memory: 50M

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

Ответ 3

вы можете попробовать docker-compose --compatibility up, который является флагом CLI, который преобразует файлы v3 в их эквивалент v2 с опциями развертывания, переведенными, когда это возможно.