我正在運行一個處理數千個併發web套接字連接的web服務器。爲了這個可能,在Debian linux上(我的基本映像是google/debian:wheezy,運行在GCE上),默認的打開文件數量設置爲1000,我通常只需將ulimit設置爲所需的數字(64,000) 。Docker忽略limits.conf(試圖解決「打開太多文件」的錯誤)
這很好,除了當我docker化我的應用程序並部署它時 - 我發現docker類型忽略了極限定義。我曾嘗試以下(所有的主機上,而不是容器本身上):
MAX=64000
sudo bash -c "echo \"* soft nofile $MAX\" >> /etc/security/limits.conf"
sudo bash -c "echo \"* hard nofile $MAX\" >> /etc/security/limits.conf"
sudo bash -c "echo \"ulimit -c $MAX\" >> /etc/profile"
ulimit -c $MAX
之後做一些研究,我發現,人們能夠通過這樣做是爲了解決類似的問題:
sudo bash -c "echo \"limit nofile 262144 262144\" >> /etc/init/docker.conf"
並重新啓動泊塢窗服務。
但是,上述所有失敗:當我的應用程序在容器中運行時,執行以下操作(無需docker即可解決問題),出現「打開的文件過多」錯誤。
我試圖在容器中運行ulimit -a
以獲得ulimit設置是否工作的指示,但這樣做會引發ulimit不是PATH的一部分的可執行文件的錯誤。
任何人都遇到過這種情況,並且/或者可以建議一種方法讓碼頭承認極限?
一定要重新啓動Docker守護程序服務! – cgp 2015-02-14 15:45:52