Ulimits в docker хост vs контейнер

Я не смог найти прямого ответа, на этот вопрос, но вот это:

скажем, что у меня есть хост, у которого есть max open files 1024:

[root@host]# ulimit -a
open files                      (-n) 1024

и контейнер docker, работающий на этом хосте с :

[root@container]# ulimit -a
open files                      (-n) 1048576

Итак, у меня будет проблема в контейнере, если я попытаюсь открыть более 1024 файлов? Я думаю, что реальный предел в этом случае для контейнера будет 1024 файла. Что ты думаешь?

2 ответов


реальный предел будет 1048576.

посмотрите на правую часть этого изображения, которая показывает, что контейнеры-это в основном изолированные процессы, работающие в одной операционной системе:

Containers vs. VMs

поскольку каждый системный вызов в контейнере будет обрабатываться непосредственно ОС хоста, отображаемый ulimit (1048576) поступает непосредственно из ОС хоста, и это значение будет использоваться.

разница в установки могли быть причинены конфигурация Докер, например.

(обратите внимание, что для VMs, это будет по-другому: гостевая ОС может отображать значение 1048576, но открытые вызовы в конце концов будут обрабатываться хост-ОС, которая наложит ограничение 1024)


хотя это немного поздно, я просто хочу, чтобы очистить сомнения о разнице в ulimit.

Если вы задаете значение net при запуске контейнера, значение ulimit, отображаемое в контейнере, поступает из хост-ОС. Вопрос в том, почему вы видите другое значение при выполнении той же команды с хоста?

это потому, что при запуске команды на хосте она показывает свой мягкий предел. С другой стороны, значение, которое контейнер показывает жесткий предел хост-ОС. Причина этого в том, что вам разрешено пересекать мягкий предел. В каком-то смысле. жесткий предел-это реальный предел. Вы можете найти больше о ulimit в этом ссылке.

чтобы увидеть жесткий предел, просто введите следующую команду

ulimit -Hn

вы увидите, что значения совпадают.

Б. Н. вы не можете пересечь жесткий предел, но вы можете увеличить его, если вы корень.