2017-04-05 88 views
1

如何在具有隻讀文件系統的碼頭圖像上將偵聽隊列大小增加到128以上?碼頭集裝箱增加偵聽隊列大小超過128

當我跑我的容器,我得到以下錯誤:

uWSGI: - Listen queue size is greater than the system max net.core.somaxconn (128).

我有一個Dockerfile與基本映像python:2.7。我正在嘗試增加Unix套接字和TCP連接偵聽隊列的系統級限制,以便uwsgi可以將偵聽隊列限制設置爲1024,如uwsgi: your server socket listen backlog is limited to 100 connections所述。

我嘗試添加這些RUN命令到Dockerfile:

  • echo 4096 > /proc/sys/net/core/somaxconn
  • sysctl -w net.core.somaxconn=4096

但是這些都失敗分別與以下錯誤:

  • /bin/sh: 1: cannot create /proc/sys/net/core/somaxconn: Read-only file system
  • sysctl: setting key "net.core.somaxconn": Read-only file system

我也嘗試安裝文件覆蓋/proc/sys/net/core/somaxconn和失敗,錯誤cannot be mounted because it is located inside "/proc"

我也嘗試運行之前運行的主機上sudo sysctl -w net.core.somaxconn=4096 net.core.somaxconn = 4096,但它不會反映在碼頭集裝箱; uwsgi仍然失敗,錯誤uWSGI: - Listen queue size is greater than the system max net.core.somaxconn (128)和運行cat /proc/sys/net/core/somaxconn在容器中顯示128,同時在主機上顯示4096。

+0

我應該嘗試用不同的基礎圖像運行? – JDiMatteo

+0

這是一個關於系統管理的問題,而不是關於編程的問題,因此SO是脫離主題的。 –

回答

1

您需要在特權模式下運行Docker,而不是在容器啓動後或者升級到較新的Docker版本後修改/proc文件系統。如果你喜歡使用docker-compose

$ docker run -ti --sysctl net.core.somaxconn=4096 --rm ubuntu /bin/bash [email protected]:/# sysctl net.core.somaxconn net.core.somaxconn = 4096