您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

为什么Docker运行这么多进程来将端口映射到我的应用程序?

为什么Docker运行这么多进程来将端口映射到我的应用程序?

Nigel Brown在docker-proxy上写了一篇详细的文章,解释了如何以及为什么。

docker-proxy,然后,是一个“捕获所有”用于允许容器端口转发到主机多克尔方法。但是,通常认为这docker- proxy是对上述问题的不佳解决方案,并且当暴露大量容器端口时,它将消耗大量内存。先前曾尝试删除对的依赖docker-proxy,但这与RHEL 6.x和CentOS 6.x中老化的内核的限制相抵触,Docker项目感到必须支持这些限制。因此,在docker- proxy当前版本1.5之前的所有Docker版本中,这些 仍然是Docker经验的主要组成部分。在我撰写本文时,即将发布1.6版,并且已经采取了一些措施来删除docker- proxy,我将在另一篇文章中介绍。

Docker现在包括一个守护程序运行时选项,以使用禁用用户态代理--userland- proxy=false。这是在v1.7中引入的。

禁用userland代理时,似乎存在一些边缘案例错误。还有IPV6问题

GitHub上存在一个开放的问题,默认情况下禁用userland代理(Docker不再支持RHEL6)。

除了以这种方式实现之外,似乎没有其他原因。一个进程应该能够处理容器的所有端口映射

代理实现包装看起来干净和内置转到 功能使用所以这可能只是转到最初的 垃圾收集范围,允许它增长到5MB?。

:内存使用已在Docker 1.12中得到了改进。每个端口仍然有一个进程,但是每个进程现在仅使用约750k的私有内存空间。

其他 2022/1/1 18:15:39 有592人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶