我在 /etc/security/limits.conf
中添加了一些内容在 docker 容器中限制 user1
的最大用户进程数,但是当我在用户 user1
下的容器中运行 bash 时, ulimit -a
不反射(reflect)在 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
之类的东西启动 docker 容器
另外,sudo docker run ... --user=user1 ... cmd
不应用 pam 限制,但 sudo docker run ... --user=root ... su user1 -c 'cmd'
会
最佳答案
/etc/security/limits.conf
只是一个由 PAM 基础架构在启动时读取的文件。 Docker 容器是刚启动后处于原始状态的内核的克隆。这意味着环境的任何继承初始化都不会应用于容器。您必须直接使用“限制”命令来设置进程限制。
更好的方法是使用容器限制,不幸的是当前版本的 docker doesn't support进程数限制。正如@thaJeztah 所提到的,看起来支持将在版本 1.6 中出现。
关于docker - docker 容器中的 pam 限制不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22624168/