【问题标题】:How do I increase limits in my docker containers on CoreOS?如何在 CoreOS 上增加 docker 容器的限制?
【发布时间】:2015-07-26 18:45:17
【问题描述】:

默认情况下,CoreOS 和 Linux 内核为诸如打开文件和锁定内存之类的事物定义了一些相当保守的限制。

所以我提高了 /etc/systemd/system.conf 中的值:

DefaultLimitNOFILE=500000
DefaultLimitMEMLOCK=unlimited

但是,当我启动 docker 容器时,限制仍然很低。 ulimit -l 打印 64。

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

ulimit:最大锁定内存:无法修改限制:操作不 允许

所以我放了

LimitMAXLOCKED=unlimited
LimitNOFILE=64000

在我的 systemd 单元文件中。

但是,这些值并没有传递到 docker 容器并且调用它们仍然不起作用。更改系统范围的默认值后,我重新启动了机器。

这可能更像是一个系统化的东西。我该如何解决这个问题?

【问题讨论】:

    标签: linux coreos systemd


    【解决方案1】:

    Docker 容器不由 systemd 启动或管理。 Docker 守护进程负责在这里设置限制。这是取自official documentation的示例:

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

    【讨论】:

    • 从记忆中这并不能单独工作。由于 dockerd 是一个与其他进程一样的进程,因此您需要授予权限以达到上限。所以我认为我做了两个系统范围的限制然后这确实有效。
    • 据我记得,docker 主守护进程以 root 身份运行,应该能够自行设置任何限制。
    猜你喜欢
    • 1970-01-01
    • 2020-09-06
    • 2018-03-29
    • 2017-08-16
    • 2017-03-18
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    相关资源
    最近更新 更多