docker - docker 容器中的 pam 限制不起作用

标签 docker

我在 /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/

相关文章:

maven - docker-maven-plugin 没有创建 dockerfile

docker - 如何实现对 docker-compose.yml 所做的更改以分离运行的容器

python - 在 Azure 中运行多个 Python 脚本(使用 Docker?)

docker - RSyslog/Syslog-ng-在容器内运行日志收集器

java - Docker容器启动时找不到jar中api-rest的主类

mysql - 防止脚本在 docker 容器中退出

docker - 如何确定在 Kubernetes 中我需要多少个服务实例?

mongodb - 配置MongoDB集群

unix - Docker 不会以用户身份运行命令

mysql - 无法查看 docker 容器内的表