Как ограничить ресурс памяти группы контейнеров Docker? - PullRequest
0 голосов
/ 26 августа 2018

Я понимаю, что могу использовать --memory и --memory-swap для ограничения ресурса памяти для контейнера.Но как ограничить ресурс памяти для группы контейнеров?

Моя система имеет 8 ГБ оперативной памяти и состоит из 2 док-контейнеров.Я хочу установить ограничение 8 ГБ для обоих контейнеров.Я не хочу устанавливать ограничение ресурса памяти 4 ГБ для каждого контейнера как

  1. Контейнер может использовать более 4 ГБ памяти.
  2. Оба контейнера не будут использовать память 4 ГБ одновременновремя, поэтому имеет смысл передать неиспользованную память контейнера A контейнеру B.

То, что я пробовал

  1. Родительская группа по умолчанию для контейнеров Docker - «Docker».«Докер» - родительская группа моих контейнеров.Я попытался установить предел родительской cgroup

    echo 8000000000> /sys/fs/cgroup/memory/docker/memory.limit_in_bytes

  2. Я проверяю использование памятиродительская cgroup "docker", но она равна 0, что не эквивалентно сумме использования памяти ее дочерними элементами.

    cat /sys/fs/cgroup/memory/docker/memory.usage_in_bytes # возвращает 0

Я ценю вашу помощь.

1 Ответ

0 голосов
/ 30 августа 2018

я думаю, что есть два способа решить вашу проблему.

вы можете попытаться увеличить использование памяти для каждого отдельного контейнера или для самого компоновщика.

, как вы упомянули, вы можете передать каждый Dockerfile в вашем композите, опция - memory или - подкачка памяти .

в вашем файле docker-compose.yml вы можете установить параметр / параметры для ограничения или увеличения ресурсов.

Например:

version: '3'
services:
  redis:
    image: redis:alpine
    deploy:
      resources:
        limits:
          cpus: '0.50'
          memory: 50M
        reservations:
          cpus: '0.25'
          memory: 20M

Вы можете сделать это для каждого контейнера, который хотите создать.

DOCS: https://docs.docker.com/compose/compose-file/#resources

...