2014-02-24 52 views
3

我目前正在尝试使用Docker开发沙箱。 Docker通过正在运行的守护进程生成进程,并且我在启用limits.conf文件中阐述的限制时遇到了很大的麻烦,使得它们适用于守护进程。具体来说,我正在运行一个forkbomb,这样守护进程就是生成所有新进程的进程。我对用户进行这个调用的nproc限制似乎并没有得到应用,我对于我的生活还是无法弄清楚如何使它工作。我很安静,它会像将正确的文件添加到/etc/pam.d/一样简单,但我不确定。为正在运行的守护进程启用PAM配置(limits.conf)

回答

2

PAM限制仅适用于与PAM一起玩的过程。默认情况下,当你在容器中启动一个shell时,它与PAM没有任何关系,并且通过PAM设置限制是行不通的。

下面是一些其他的方法来实现它!

  1. 而不是立即开始你的过程中,你就可以开始一个小包装脚本,它会做你的执行过程之前适当ulimit电话。

  2. 如果你想要一个交互shell,可以运行login -f <username>(例如login -f root);这将使用正常的登录过程在机器上自动登录(并且应该通过正常的PAM机制)。

  3. 如果你想要所有的容器受到这些限制,你可以设置你的系统的限制,然后重新启动Docker与这些下限;容器是由Docker创建的,默认情况下,它们也会继承这些限制。

+1

Docker 1.6(即将发布)将允许设置per-container ulimits。更多的信息和部分文件可以在拉请求中找到; https://github.com/docker/docker/pull/9437/files – thaJeztah