如何在CoreOS中增加Docker容器的限制?

4

默认情况下,CoreOS和Linux内核对于打开的文件和锁定的内存等内容都有一些相对保守的限制。

因此,我在/etc/systemd/system.conf中增加了一些值:

DefaultLimitNOFILE=500000
DefaultLimitMEMLOCK=unlimited

然而,当我启动我的Docker容器时,限制仍然很低。 ulimit -l 打印出 64。

运行 ulimit -l unlimited 会打印一个错误。

ulimit: max locked memory: cannot modify limit: Operation not permitted

因此,我放置了

LimitMAXLOCKED=unlimited
LimitNOFILE=64000

在我的systemd单元文件中。
然而,这些值并没有传递到docker容器中,调用它们仍然不起作用。我在更改系统范围的默认值后重启了机器。
这可能更多是一个systemd的问题。我该如何解决这个问题?
1个回答

2

Docker容器不由systemd启动或管理。Docker守护进程负责在这里设置限制。以下是从官方文档中摘取的示例:

# docker run --ulimit nofile=1024:1024 --rm debian sh -c "ulimit -n"

从记忆中来看,这个本身是不起作用的。因为 dockerd 就像其他进程一样,你需要授权才能提高限制。所以我认为我做了系统范围内的限制和这个,然后它就起作用了。 - hookenz
据我所记,Docker主守护程序以root身份运行,并且应该能够自行设置任何限制。 - Timothée Ravier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接