docker集装箱中的pam限制不起作用

我在Docker容器的/etc/security/limits.conf中添加了一些内容,以限制user1的最大用户进程数,但是当我在用户user1下的容器中运行bash时, ulimit -a并不反映已定义的限制在pam限制文件( /etc/security/limits.conf )中。

我怎样才能使这个工作?

我还将行session required pam_limits.so添加到/etc/pam.d/common-session ,所以这不是问题。

我用类似sudo docker run --user=user1 --rm=true <container-name> bash

另外, sudo docker run ... --user=user1 ... cmd不适用pam限制,但是sudo docker run ... --user=root ... su user1 -c 'cmd'

/etc/security/limits.conf只是启动时由PAM基础结构读取的文件。 Docker容器是刚刚启动后的内核原始状态的克隆。 这意味着环境的所有inheritance的初始化都不会适用于容器。 您必须直接使用“限制”命令设置过程限制。

更好的方法是使用容器限制,不幸的是当前版本的docker 不支持进程数限制。 看起来支持将会出现在版本1.6中,就像@thaJeztah提到的那样。