docker容器将侦听队列大小增加到128以上

JDi*_*teo 4 python unix uwsgi docker

如何在具有只读文件系统的Docker映像上将侦听队列大小增加到超过128?

运行容器时,出现以下错误:

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

我有一个带有基本映像python:2.7的Dockerfile 。我试图提高Unix套接字和TCP连接监听队列的系统级别限制,以便uwsgi可以将监听队列限制设置为1024,如uwsgi所述:服务器套接字监听积压被限制为100个连接

我尝试将以下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在运行之前在主机上运行,​​但这并没有反映在docker容器中;uwsgi仍然会因错误uWSGI: - Listen queue size is greater than the system max net.core.somaxconn (128)而失败,并且cat /proc/sys/net/core/somaxconn容器中的运行状态显示为128,而主机上的状态显示为4096。

ova*_*nes 6

您要么需要以特权模式运行Docker,要么可以/proc在启动容器后修改文件系统,或者升级到较新的Docker版本。run子命令具有--sysctl选项,该选项可以进行您设想的更改:

$ docker run -ti --sysctl net.core.somaxconn=4096 --rm ubuntu /bin/bash root@9e850908ddb7:/# sysctl net.core.somaxconn net.core.somaxconn = 4096


kak*_*git 5

如果您喜欢使用docker-compose。这是您要调整的配置:

sysctls:
  net.core.somaxconn: 1024
Run Code Online (Sandbox Code Playgroud)

要么

sysctls:
  - net.core.somaxconn=1024
Run Code Online (Sandbox Code Playgroud)

参考:https : //docs.docker.com/compose/compose-file/#sysctls