2015-05-09 151 views
0

我想啓動一個具有特權的容器。手動我可以通過打字直接做到這一點:Docker容器的Dockerfile特權標誌(因爲Apache錯誤ulimit而需要)AWS

sudo docker run -privileged name/image 

但我怎麼能生成一個容器從Dockerfile有特權,有沒有命令這樣做的dockerfile?

在我的情況下,我正在做一個部署在亞馬遜,萬一它不能從一個Dockerfile完成可以從Dockerrun.aws.json完成嗎?

PS。爲了給這個問題提供一些上下文,我需要docker容器中的特權才能夠因爲apache而改變ulimit。

編輯:

我本地不改變它在容器中,因爲碼頭工人容器的ulimit是主機的一個。這就是爲什麼如果我在本地更改容器,更改不會影響容器。

+0

不是一個解決方案,而是一些一般性建議,可能會導致您尋找另一個方向 - 幾乎每個有經驗的人都建議**不要**由於安全問題,風險長時間在高級特權級別運行任何時間的一個簡單的錯誤或疏忽造成損害,等 –

+0

我同意,但不知道如果解決方案試圖忽略錯誤,當亞馬遜在實例中創建容器(我不知道該怎麼做),或嘗試修復Dockerfile錯誤 – chuseuiti

回答

0

以提升的權限運行容器可能會引發各種安全性和可靠性問題。

我建議不要用提升的特權啓動整個Docker會話,這可能意味着所有在其上運行的任何東西都將具有提升的特權,而是創建一個爲ulimit設置更改的數字的docker容器。

我不是專家,但創建您自己的容器新的容器內看起來不夠清晰然後sudo vi /etc/security/limits.conf,改變soft nofilesoft nproc,保存,然後導出新的容器,似乎走的路的說明。然後,您可以運行具有正常權限級別的新容器。

似乎在許多地方使用的其他選項是運行多個容器實例,以避免擁塞問題。

+0

問題是:碼頭容器的ulimit是主機的ulimit。這就是爲什麼如果我改變容器內的ulimit,它實際上並沒有考慮到,並且我保持ulimit的錯誤。通常這個錯誤就像一個警告,但是亞馬遜並沒有自動創建容器。正如你可以看到在這個其他問題:http://stackoverflow.com/questions/30077465/error-docker-deployment-in-amazon-ec2-docker-container-quit-unexpectedly – chuseuiti

+0

如果它是亞馬遜創建的容器上運行亞馬遜主機,那麼你將不得不申請亞馬遜獲得**主機**限制提出。即使容器具有提升的權限,它也不應該能夠改變主機設置,如果可能的話,亞馬遜將會非常惱火! –