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