2016-03-30 2 views
1

Я прочитал here, что docker контейнеры наследуют ulimit от хозяина. Это не похоже на мои контейнеры. В частности, мне нужно свойство max locked memory для наследования с хоста. Кто-нибудь знает, как это исправить?Докер-контейнер не наследует ulimit от хоста

[email protected]:~$ ulimit -a 
core file size   (blocks, -c) 0 
data seg size   (kbytes, -d) unlimited 
scheduling priority    (-e) 0 
file size    (blocks, -f) unlimited 
pending signals     (-i) 31404 
max locked memory  (kbytes, -l) unlimited 
max memory size   (kbytes, -m) unlimited 
open files      (-n) 50000 
pipe size   (512 bytes, -p) 8 
POSIX message queues  (bytes, -q) 819200 
real-time priority    (-r) 0 
stack size    (kbytes, -s) 8192 
cpu time    (seconds, -t) unlimited 
max user processes    (-u) 50000 
virtual memory   (kbytes, -v) unlimited 
file locks      (-x) unlimited 
[email protected]:~$ docker exec -it container /bin/bash 
[email protected]:/# ulimit -a 
core file size   (blocks, -c) 0 
data seg size   (kbytes, -d) unlimited 
scheduling priority    (-e) 0 
file size    (blocks, -f) unlimited 
pending signals     (-i) 31404 
max locked memory  (kbytes, -l) 64 
max memory size   (kbytes, -m) unlimited 
open files      (-n) 524288 
pipe size   (512 bytes, -p) 8 
POSIX message queues  (bytes, -q) 819200 
real-time priority    (-r) 0 
stack size    (kbytes, -s) 8192 
cpu time    (seconds, -t) unlimited 
max user processes    (-u) 524288 
virtual memory   (kbytes, -v) unlimited 
file locks      (-x) unlimited 
+0

Какую версию сервера и клиента докеров вы используете? Что такое ОС хоста? –

+0

'Клиент: Версия: 1.10.2 версия API: 1,22 Go версия: go1.5.3 Git совершить: c3959b1 постройки: пн 22 февраля 21:37:01 +2016 OS/Arch: Linux/amd64 сервера : версия: 1.10.2 версия API: 1,22 Go версия: go1.5.3 Git совершить: c3959b1 постройки: Пн Фев 22 21:37:01 2016 OS/Arch: Linux/amd64 ' – lingxiao

+0

хост ОС Ubuntu 14.04.3 LTS (GNU/Linux 3.13.0-66-generic x86_64) – lingxiao

ответ

2

Если вы хотите установить пользовательские ulimits для контейнера, вы можете использовать опцию --ulimit. Например;

docker run -it --rm --ulimit memlock=32768:32768 ubuntu sh -c "ulimit -a" 

Шоу:

time(seconds)  unlimited 
file(blocks)   unlimited 
data(kbytes)   unlimited 
stack(kbytes)  8192 
coredump(blocks)  0 
memory(kbytes)  unlimited 
locked memory(kbytes) 32 
process    7873 
nofiles    1024 
vmemory(kbytes)  unlimited 
locks    unlimited 

Вы можете найти более подробную информацию в документации; https://docs.docker.com/engine/reference/commandline/run/

Другие способы ограничения ресурсов для контейнера также см. В этом разделе; https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources

Смежные вопросы