2014-02-24 84 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