Ограничение памяти и ограничение ЦП в контейнере Docker

ОБНОВИТЬ:

нашел много вопросов и обсуждений на stackoverflow по этой теме. И хотя тысячи пользователей помечают их как принятые и запущенные, они не кажутся здесь правильным ответом.


Я запустил контейнер докера (версия 1.13.1, сборка 092cba3) со следующими ограничениями ресурсов:

docker run --privileged -v /sys/fs/cgroup:/sys/fs/cgroup -m 4096M --cpuset-cpus='0' --cpus=1 --cpu-shares=256 -p $IMAGE_NAME

Хост-система (RHEL 7) имеет 4 ядра и 8 ГБ памяти. В основном я хочу ограничить доступную память и ЦП для контейнера. После успешного запуска контейнера я открыл bash и попытался найти информацию об ограничении внутри контейнера. Но я не смог получить правильную информацию.

Я пробовал это:

sudo cat /proc/meminfo

Результат:

Хост-система MemTotal: 8008812 КБ MemFree: 7416404 КБ MemAvailable: 7537332 КБ
Контейнер Docker MemTotal: 8008812 КБ MemFree: 7318052 КБ MemAvailable: 7498764 КБ

Точно так же я хотел получить лимит ЦП:

grep -c ^processor /proc/cpuinfo

Результат:

Хост-система 4
Образ Docker 4

Кажется, что ограничение ЦП и памяти, установленное контейнером, не отображается контейнером. Я также пытался запросить информацию о cgroup.

mkdir -p /tmp/memory
mount -n -t cgroup -o memory cgroup /tmp/memory

Затем я просматриваю файлы cgroup:

[root@engrlab memory]# cat /tmp/memory/memory.limit_in_bytes
9223372036854771712

Это число больше, чем фактическая память хост-системы.

Есть ли способ проверить, правильно ли установлены ограничения ресурсов в контейнере? Как мне найти информацию об ограничении ресурсов внутри контейнера? Оцените любое предложение.


person pythonician_plus_plus    schedule 21.02.2018    source источник


Ответы (2)


Я пробую эту команду на моем хосте докеров, который работает

docker run -it -d -m 100M --cpuset-cpus='0' --cpus=1 --cpu-shares=256 --name testing ubuntu /bin/bash

тестирование статистики докеров

person Thol Voleak    schedule 22.02.2018

ОБНОВИТЬ

Это правильный ответ: https://stackoverflow.com/a/41827812/3209177


Я только что нашел такой ответ:

Ограничение памяти в контейнере докеров не работает

Я собираюсь попробовать это и выскажу свое наблюдение.

person pythonician_plus_plus    schedule 22.02.2018