ОБНОВИТЬ:
нашел много вопросов и обсуждений на 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
Это число больше, чем фактическая память хост-системы.
Есть ли способ проверить, правильно ли установлены ограничения ресурсов в контейнере? Как мне найти информацию об ограничении ресурсов внутри контейнера? Оцените любое предложение.