Как заставить docker run наследовать ulimits

Выполнение команды через докер, похоже, не соответствует моим текущим настроенным ulimits:

$ ulimit -t
5
~ $ sudo -- bash -c "ulimit -t"
5
~ $ sudo -- docker run --rm debian:wheezy bash -c "ulimit -t"
unlimited

Как я могу это сделать?


person Joachim Breitner    schedule 09.09.2014    source источник


Ответы (2)


Вы можете установить глобальные ограничения в конфигурации демона Docker. В Ubuntu этим управляет Upstart. Добавьте limit cpu <softlimit> <hardlimit> в /etc/init/docker.conf и перезапустите демон.

Для каждого контейнера необходимо использовать флаг --privileged с docker run, чтобы установить ulimits. AFAIK нет возможности сделать это без --privileged.

См. Также Ограничения времени выполнения для ЦП и памяти .

person Ben Whaley    schedule 10.09.2014
comment
Просто проверяю: тогда это относится ко всем контейнерам? В моем случае я хотел бы установить ограничения для каждого экземпляра. - person Joachim Breitner; 10.09.2014
comment
В мой ответ добавлено --privileged - person Ben Whaley; 10.09.2014

В настоящее время (v1.5.0) эти ограничения унаследованы от ограничений демона докеров. Но команда docker собирается выпустить ограничения для контейнеров.

Для обходного пути вы можете установить ограничения внутри контейнера, например

# docker run ubuntu bash -c "ulimit -t 5; doSomething"
person Gregory Kalabin    schedule 02.02.2015