热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Docker主机与容器中的Ulimits

如何解决《Docker主机与容器中的Ulimits》经验,为你挑选了2个好方法。

我无法找到这个问题的直接答案,但这里是:

假设我有一个拥有最大打开文件1024的主机:

[root@host]# ulimit -a
open files                      (-n) 1024

以及在该主机中运行的docker容器:

[root@container]# ulimit -a
open files                      (-n) 1048576

如果我尝试打开超过1024个文件,我会在容器中遇到问题吗?我认为在这种情况下容器的实际限制将是1024个文件.你怎么看?



1> 小智..:

真正的限制将是1048576.

看一下这个图像的右侧部分,它显示容器基本上只是在同一操作系统上运行的独立进程:

容器与VM

由于容器中的每个系统调用都将由主机OS直接处理,因此显示的ulimit(1048576)直接来自主机OS,这是将要使用的值.

例如,ulimit的差异可能是由Docker配置引起的.

(请注意,对于VM,这将是不同的:客户操作系统可能会显示值1048576,但是打开的调用最终将由主机操作系统处理,这将限制为1024)



2> Alim Ul Gias..:

虽然有点晚了,但我只是想澄清对ulimit差异的疑虑.

如果在运行容器时进行net设置,则容器中显示的ulimit值来自主机OS.问题是,为什么从主机运行相同的命令时会看到不同的值?

这是因为在主机中运行命令时,它显示其软限制.另一方面,容器显示的值是主机OS的硬限制.原因是您可以越过软限制.所以从某种意义上说,硬限制实际上是真正的限制.您可以在此链接中找到有关ulimit的更多信息.

要查看硬限制,只需键入以下命令即可

ulimit -Hn

您将看到值匹配.

注意你不能越过硬限制,但如果你是根,你可以增加它.


推荐阅读
author-avatar
磊仔2502898265
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有