我在集群模型中使用 Debian 容器时遇到了问题。我在 3 个需要相互通信的容器中启动一个进程,但在初始通信过程中,生成了与其 TCP 缓冲区大小相关的异常。
关注此帖子https://developer.ibm.com/answers/questions/236787/getting-warning-message-dcsv9413w-failed-to-set-bu/我尝试更改设置net.ipv4.tcp_rmem
,net.ipv4.tcp_wmem
但它们在容器中不存在,并且阅读其他帖子,看起来 docker 不允许更改这种设置。有人可以帮忙吗?
答案1
最新版本的 docker 允许通过命令行提供 sysctl 设置,例如docker run --sysctl
(参见https://docs.docker.com/engine/reference/commandline/run/#configure-namespaced-kernel-parameters-sysctls-at-runtime)。
您需要的两种设置均受支持(实际上,所有 net.* 设置均受支持),尽管您需要最新的 docker 版本。请参阅https://github.com/docker/docker/issues/4717了解一些背景信息。
然而,在此之前,您最好的(也是唯一的)选择是相应地配置系统,并让 docker 继承系统的 sysctl 设置。